Maison  >  Article  >  Java  >  Comment Java appelle-t-il les interfaces externes ? Prenons un simple appel d'interface POST comme exemple

Comment Java appelle-t-il les interfaces externes ? Prenons un simple appel d'interface POST comme exemple

php是最好的语言
php是最好的语言original
2018-08-04 14:22:2812994parcourir

Lors du développement du logiciel Java C/S, nous nous sommes connectés à certaines interfaces Web fournies par des tiers.

Utiliser les interfaces n'est pas aussi difficile qu'on l'imagine.
Par exemple, lorsque l'interface fournie est sous forme GET, l'adresse peut être affichée directement sur la page Web et la valeur de retour peut être obtenue en rassemblant les paramètres et en les saisissant.
S'il s'agit d'une interface POST, vous devez utiliser des méthodes telles que POSTMAN ou le propre plug-in du navigateur pour faire une demande d'interface.
Il en va de même pour la conversion en code.
Ce qui suit est un exemple d'appel d'interface POST simple :
P : Le paramètre param peut être transmis en utilisant JSONObject.fromObject (object)

     /**
     * @author : cjd
     * @description : post接口 返回结果字符串
     * @params : [url, param]
     * @param url 请求接口
     * @param param 需要的json字符串
     * @return :java.lang.String
     * @date : 17:31 2018/8/1
     */
    public static String sendPost(String url, String param) {
        OutputStreamWriter out = null;
        BufferedReader in = null;
        String result = "";        try {
            URL realUrl = new URL(url);
            HttpURLConnection conn = null;            // 打开和URL之间的连接
            conn = (HttpURLConnection) realUrl.openConnection();            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");    // 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)");
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            conn.connect();            // 获取URLConnection对象对应的输出流
            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");            // 发送请求参数
            out.write(param);            // flush输出流的缓冲
            out.flush();            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        }        //使用finally块来关闭输出流、输入流
        finally {            try {                if (out != null) {
                    out.close();
                }                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }        return result;
    }

Ce que vous obtenez après avoir appelé cette méthode est le Format de chaîne de retour correspondant des données json.
Java est un langage orienté objet, donc JSONObject/JsonArray est utilisé pour convertir les données json en objets de classe d'entité. Prenez l'exemple que j'ai utilisé, car le formulaire d'interface renvoyé est un peu étrange, j'ai donc effectué un traitement en plusieurs étapes. . Comme suit :

            PrePickupMailRes resultBean = new PrePickupMailRes();
            JSONObject respJson = JSONObject.fromObject(JSONObject.fromObject(json).get("respJson"));
            JSONArray jsonArray = (JSONArray) respJson.get("prePickupRspDetailDTOList");
            JSONObject resultJson = (JSONObject) jsonArray.get(0);
            JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[]{"MM/dd/yyyy HH:mm:ss"}));
            resultBean = (PrePickupMailRes) JSONObject.toBean(resultJson, PrePickupMailRes.class);

De cette façon, ce que nous obtenons finalement est un objet entité.

Pour plus d'informations sur l'utilisation de JSONObject/JSONArray, voir :
https://blog.csdn.net/chijiandi/article/details/81011369

Lors du développement de Java C/S logiciel , ancré avec certaines interfaces Web fournies par des tiers.
Utiliser les interfaces n'est pas aussi difficile qu'on l'imagine.
Par exemple, lorsque l'interface fournie est sous forme GET, l'adresse peut être affichée directement sur la page Web et la valeur de retour peut être obtenue en rassemblant les paramètres et en les saisissant.
S'il s'agit d'une interface POST, vous devez utiliser des méthodes telles que POSTMAN ou le propre plug-in du navigateur pour faire une demande d'interface.
Il en va de même pour la conversion en code.
Ce qui suit est un exemple d'appel d'interface POST simple :
P : Le paramètre param peut être transmis en utilisant JSONObject.fromObject (object)

     /**
     * @author : cjd
     * @description : post接口 返回结果字符串
     * @params : [url, param]
     * @param url 请求接口
     * @param param 需要的json字符串
     * @return :java.lang.String
     * @date : 17:31 2018/8/1
     */
    public static String sendPost(String url, String param) {
        OutputStreamWriter out = null;
        BufferedReader in = null;
        String result = "";        try {
            URL realUrl = new URL(url);
            HttpURLConnection conn = null;            // 打开和URL之间的连接
            conn = (HttpURLConnection) realUrl.openConnection();            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");    // 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)");
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            conn.connect();            // 获取URLConnection对象对应的输出流
            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");            // 发送请求参数
            out.write(param);            // flush输出流的缓冲
            out.flush();            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        }        //使用finally块来关闭输出流、输入流
        finally {            try {                if (out != null) {
                    out.close();
                }                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }        return result;
    }

Ce que vous obtenez après avoir appelé cette méthode est le Format de chaîne de retour correspondant des données json.
Java est un langage orienté objet, donc JSONObject/JsonArray est utilisé pour convertir les données json en objets de classe d'entité. Prenons l'exemple que j'ai utilisé, car le formulaire d'interface renvoyé est un peu étrange, j'ai donc effectué un traitement en plusieurs étapes. . Comme suit :

            PrePickupMailRes resultBean = new PrePickupMailRes();
            JSONObject respJson = JSONObject.fromObject(JSONObject.fromObject(json).get("respJson"));
            JSONArray jsonArray = (JSONArray) respJson.get("prePickupRspDetailDTOList");
            JSONObject resultJson = (JSONObject) jsonArray.get(0);
            JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[]{"MM/dd/yyyy HH:mm:ss"}));
            resultBean = (PrePickupMailRes) JSONObject.toBean(resultJson, PrePickupMailRes.class);

De cette façon, ce que nous obtenons finalement est un objet entité.

Articles associés :

Exemples détaillés d'appel de méthodes d'interfaces C# dans les classes dérivées et les classes externes

Voulez-vous faire un exemple d'appel de l'interface de service Web Java à partir de PHP

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!

Déclaration:
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