Heim >Java >JavaBase >So rufen Sie die Schnittstelle in Java auf

So rufen Sie die Schnittstelle in Java auf

angryTom
angryTomOriginal
2019-11-20 13:13:496040Durchsuche

Im eigentlichen Entwicklungsprozess müssen wir häufig die von der anderen Partei bereitgestellte Schnittstelle aufrufen oder testen, ob die von uns geschriebene Schnittstelle geeignet ist. Die Frage ist also: Wie ruft Java die Schnittstelle auf? Viele Projekte kapseln und spezifizieren die Schnittstellenspezifikationen ihrer eigenen Projekte, sodass die meisten von ihnen die von der anderen Partei bereitgestellte Schnittstelle oder eine Schnittstelle eines Drittanbieters (Textnachrichten, Wetter usw.) aufrufen müssen. Selbsttests gilt natürlich auch!

So rufen Sie die Schnittstelle in Java auf

java So rufen Sie die Schnittstelle auf

1. Öffnen Sie die Verbindung mit der URL

URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

2. Legen Sie allgemeine Anforderungsattribute fest

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. Legen Sie fest, ob die Ausgabe an httpUrlConnection erfolgen soll und ob von httpUrlConnection gelesen werden soll

Außerdem müssen Sie beim Senden einer Post-Anfrage die beiden am häufigsten verwendeten HTTP-Anfragen festlegen: get und post. Die Get-Anfrage kann eine statische Seite erhalten, oder Sie können die Parameter nach der URL-Zeichenfolge einfügen und an das Servlet übergeben, posten und abrufen. Der Unterschied besteht darin, dass die Post-Parameter nicht in der URL-Zeichenfolge, sondern im Hauptteil der http-Anfrage platziert werden.

conn.setDoOutput(true);
conn.setDoInput(true);

4. Trennen

Es ist am besten zu schreiben, dass die Trennung nur unterbrochen wird, wenn die zugrunde liegende TCP-Socket-Verbindung inaktiv ist. Wenn es von anderen Threads verwendet wird, wird es nicht abgeschnitten. Wenn Multithreading behoben ist und Sie die Verbindung nicht trennen, erhöht sich die Anzahl der Verbindungen, bis keine Informationen mehr gesendet oder empfangen werden können. Nach dem Schreiben wird die Verbindung getrennt und es wird normal.

conn.disconnect();

Spezifischer Implementierungscode:

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 Chinesische Website, eine große Anzahl kostenloser Java-Einführungs-Tutorials, willkommen zum Online-Lernen!

Das obige ist der detaillierte Inhalt vonSo rufen Sie die Schnittstelle in Java auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn