Heim  >  Artikel  >  Java  >  Wie ruft Java externe Schnittstellen auf? Nehmen Sie als Beispiel einen einfachen POST-Schnittstellenaufruf

Wie ruft Java externe Schnittstellen auf? Nehmen Sie als Beispiel einen einfachen POST-Schnittstellenaufruf

php是最好的语言
php是最好的语言Original
2018-08-04 14:22:2812981Durchsuche

Bei der Entwicklung der Java C/S-Software haben wir eine Verbindung zu einigen Webschnittstellen von Drittanbietern hergestellt.

Die Verwendung von Schnittstellen ist nicht so schwierig wie gedacht.
Wenn die bereitgestellte Schnittstelle beispielsweise im GET-Format vorliegt, kann die Adresse direkt auf der Webseite ausgegeben werden und der Rückgabewert kann durch Zusammensetzen und Eingeben der Parameter erhalten werden.
Wenn es sich um eine POST-Schnittstelle handelt, müssen Sie Methoden wie POSTMAN oder das browsereigene Plug-in verwenden, um eine Schnittstellenanforderung zu stellen.
Das Gleiche gilt für die Konvertierung in Code.
Das Folgende ist ein einfaches Beispiel für einen POST-Schnittstellenaufruf:
P: Der Parameter param kann mit JSONObject.fromObject (Objekt) übergeben werden.

     /**
     * @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;
    }

Nach dem Aufruf dieser Methode erhalten Sie die entsprechende Rückgabe JSON-Datenzeichenfolgenformat.
Java ist eine objektorientierte Sprache, daher wird JSONObject/JsonArray zum Konvertieren von JSON-Daten in Entitätsklassenobjekte verwendet. Da die dort zurückgegebene Schnittstellenform etwas seltsam ist, habe ich eine mehrstufige Verarbeitung durchgeführt . Wie folgt:

            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);

Auf diese Weise erhalten wir schließlich ein Entitätsobjekt.

Informationen zur Verwendung von JSONObject/JSONArray finden Sie unter:
https://blog.csdn.net/chijiandi/article/details/81011369

Bei der Entwicklung von Java C/S Software, angedockt mit einigen von Dritten bereitgestellten Webschnittstellen.
Die Verwendung von Schnittstellen ist nicht so schwierig wie gedacht.
Wenn die bereitgestellte Schnittstelle beispielsweise im GET-Format vorliegt, kann die Adresse direkt auf der Webseite ausgegeben werden und der Rückgabewert kann durch Zusammensetzen und Eingeben der Parameter erhalten werden.
Wenn es sich um eine POST-Schnittstelle handelt, müssen Sie Methoden wie POSTMAN oder das browsereigene Plug-in verwenden, um eine Schnittstellenanforderung zu stellen.
Das Gleiche gilt für die Konvertierung in Code.
Das Folgende ist ein einfaches Beispiel für einen POST-Schnittstellenaufruf:
P: Der Parameter param kann mit JSONObject.fromObject (Objekt) übergeben werden.

     /**
     * @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;
    }

Nach dem Aufruf dieser Methode erhalten Sie die entsprechende Rückgabe JSON-Datenzeichenfolgenformat.
Java ist eine objektorientierte Sprache, daher wird JSONObject/JsonArray zum Konvertieren von JSON-Daten in Entitätsklassenobjekte verwendet. Da die dort zurückgegebene Schnittstellenform etwas seltsam ist, habe ich eine mehrstufige Verarbeitung durchgeführt . Wie folgt:

            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);

Auf diese Weise erhalten wir schließlich ein Entitätsobjekt.

Verwandte Artikel:

Detaillierte Beispiele für Aufrufmethoden von C#-Schnittstellen in abgeleiteten Klassen und externen Klassen

Möchten Sie erstellen ein Beispiel für den Aufruf einer Java-Webservice-Schnittstelle aus PHP

Das obige ist der detaillierte Inhalt vonWie ruft Java externe Schnittstellen auf? Nehmen Sie als Beispiel einen einfachen POST-Schnittstellenaufruf. 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