실제 개발 과정에서 상대방이 제공하는 인터페이스를 호출하거나, 우리가 작성한 인터페이스가 적합한지 테스트해야 하는 경우가 많습니다. 그렇다면 자바는 인터페이스를 어떻게 호출하는가 하는 것입니다. 많은 프로젝트가 자체 프로젝트의 인터페이스 사양을 캡슐화하고 지정하므로 대부분은 상대방이 제공하는 인터페이스나 타사 인터페이스(문자 메시지, 날씨 등)를 호출해야 합니다. 물론 자가 테스트도 마찬가지입니다!
java 인터페이스 호출 방법
1. URL
URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
2로 연결을 엽니다. 공통 요청 속성 설정
conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
#🎜 🎜#3. httpUrlConnection으로 출력할지 여부를 설정하고, httpUrlConnection에서 읽을지 여부를 설정합니다.
또한 게시물 요청을 보낼 때 가장 일반적으로 사용되는 이 두 가지 HTTP 요청을 설정해야 합니다. 이는 get 및 post 요청에 지나지 않습니다. 정적 페이지를 얻을 수도 있고 URL 문자열 뒤에 매개변수를 추가하여 서블릿에 전달할 수도 있습니다. post와 get의 차이점은 post의 매개변수가 다음과 같다는 것입니다. URL 문자열에 배치되지 않고 http 요청 본문에 배치됩니다.conn.setDoOutput(true); conn.setDoInput(true);
4. Disconnect
기본 TCP 소켓 링크가 다음과 같은 경우에만 연결 해제가 끊어진다고 작성하는 것이 가장 좋습니다. 유휴 . 다른 스레드에서 사용 중인 경우에는 잘리지 않습니다. 멀티스레딩이 고정된 경우 연결을 끊지 않으면 더 이상 정보를 보내거나 받을 수 없을 때까지 연결 수가 증가합니다. 연결 끊김을 쓴 후에는 정상이됩니다.conn.disconnect();특정 구현 코드:
package com.c; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; public class ToInterface { /** * 调用对方接口方法 * @param path 对方或第三方提供的路径 * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 */ public static void interfaceUtil(String path,String data) { try { URL url = new URL(path); //打开和url之间的连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); PrintWriter out = null; //请求方式 // conn.setRequestMethod("POST"); // //设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); //设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个 //最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, //post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 conn.setDoOutput(true); conn.setDoInput(true); //获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); //发送请求参数即数据 out.print(data); //缓冲数据 out.flush(); //获取URLConnection对象对应的输入流 InputStream is = conn.getInputStream(); //构造一个字符流缓存 BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = ""; while ((str = br.readLine()) != null) { System.out.println(str); } //关闭流 is.close(); //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。 //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。 conn.disconnect(); System.out.println("完整结束"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { interfaceUtil("http://api.map.baidu.com/telematics/v3/weather?location=嘉兴&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ", ""); // interfaceUtil("http://192.168.10.89:8080/eoffice-restful/resources/sys/oadata", "usercode=10012"); // interfaceUtil("http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday", // "floor=first&year=2017&month=9&isLeader=N"); } }php 중국어 웹사이트, 다수의 무료
Java 입문 튜토리얼 , 학습을 환영합니다. 온라인!
위 내용은 Java에서 인터페이스를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!