Maison > Java > JavaBase > le corps du texte

Comment appeler l'interface en Java

angryTom
Libérer: 2019-11-20 13:13:49
original
6016 Les gens l'ont consulté

Dans le processus de développement actuel, nous devons souvent appeler l'interface fournie par l'autre partie ou tester si l'interface que nous avons écrite est adaptée. La question est donc de savoir comment Java appelle l'interface ? De nombreux projets encapsulent et spécifient les spécifications d'interface de leurs propres projets, la plupart d'entre eux doivent donc appeler l'interface fournie par l'autre partie ou une interface tierce (messages texte, météo, etc.). Bien sûr, les autotests aussi !

Comment appeler l'interface en Java

java Comment appeler l'interface

Ouvrir la connexion avec l'url

URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
Copier après la connexion

2. Définir les attributs de requête communs

conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
Copier après la connexion

3. Définir s'il faut sortir vers httpUrlConnection et s'il faut lire à partir de httpUrlConnection

De plus, lors de l'envoi d'une requête de publication, vous devez définir les deux requêtes HTTP les plus couramment utilisées, qui sont get et post. La requête get peut obtenir une page statique, ou vous pouvez mettre les paramètres après la chaîne d'URL. et transmettez-le au servlet, post et get. La différence est que les paramètres de publication ne sont pas placés dans la chaîne URL, mais dans le corps de la requête http.

conn.setDoOutput(true);
conn.setDoInput(true);
Copier après la connexion

4. Déconnexion

Il est préférable d'écrire que la déconnexion n'est coupée que lorsque le lien de socket TCP sous-jacent est inactif. S'il est utilisé par d'autres threads, il ne sera pas coupé. Si le multithreading est corrigé, si vous ne vous déconnectez pas, le nombre de liens augmentera jusqu'à ce que plus aucune information ne puisse être envoyée ou reçue. Après avoir écrit la déconnexion, cela devient normal.

conn.disconnect();
Copier après la connexion

Code d'implémentation spécifique :

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");
    }
}
Copier après la connexion

site chinois php, un grand nombre de tutoriels d'introduction Java gratuits, bienvenue pour apprendre en ligne !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal