欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)調(diào)用接口API并返回?cái)?shù)據(jù)

 更新時(shí)間:2024年05月13日 10:47:23   作者:rfos  
這篇文章主要介紹了Java實(shí)現(xiàn)調(diào)用接口API并返回?cái)?shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java調(diào)用接口API并返回?cái)?shù)據(jù)

Get方法

import com.alibaba.fastjson.JSONObject;
import edu.zhku.fire_ant_project.config.WxConstant;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpCallOtherInterfaceUtils {
    public static void main(String args[]) {
        HttpClient client = HttpClients.createDefault();
        // 要調(diào)用的接口方法
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ WxConstant.appid +"&secret="+WxConstant.secret;
        HttpGet httpGet=new HttpGet(url);
        JSONObject jsonObject = null;
        try {
            HttpResponse res = client.execute(httpGet);
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 返回json格式:
                jsonObject = JSONObject.parseObject(EntityUtils.toString(res.getEntity()));
                System.out.println(jsonObject);
            }
        } catch (Exception e) {
            System.out.println("服務(wù)間接口調(diào)用出錯(cuò)!");
            e.printStackTrace();
        }
    }
}

post方法

import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpCallOtherInterfaceUtils {
    public static String callOtherInterface(JSONObject jsonParam, String port, String postUrl) {
        HttpClient client = HttpClients.createDefault();
        // 要調(diào)用的接口方法
        String url = "http://localhost:" + port + postUrl;
        HttpPost post = new HttpPost(url);
        JSONObject jsonObject = null;
        try {
            StringEntity s = new StringEntity(jsonParam.toString(), "UTF-8");
            //s.setContentEncoding("UTF-8");//此處測試發(fā)現(xiàn)不能單獨(dú)設(shè)置字符串實(shí)體的編碼,否則出錯(cuò)!應(yīng)該在創(chuàng)建對象時(shí)創(chuàng)建
            s.setContentType("application/json");
            post.setEntity(s);
            post.addHeader("content-type", "application/json;charset=UTF-8");
            HttpResponse res = client.execute(post);
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 返回json格式:
                jsonObject = JSONObject.parseObject(EntityUtils.toString(res.getEntity()));
            }
        } catch (Exception e) {
            System.out.println("服務(wù)間接口調(diào)用出錯(cuò)!");
            e.printStackTrace();
            //throw new RuntimeException(e);
        }
        return jsonObject.toString();
    }
}

Java跨服務(wù)調(diào)用接口

Java程序跨服務(wù)調(diào)用接口,通常可以使用以下方式:

  • RESTful API:通過HTTP協(xié)議進(jìn)行通信,使用RESTful API調(diào)用其他服務(wù)的接口。
  • RPC:使用遠(yuǎn)程過程調(diào)用(RPC)框架,如Dubbo、gRPC等,通過序列化和反序列化技術(shù)實(shí)現(xiàn)跨服務(wù)調(diào)用。
  • 消息隊(duì)列:使用消息隊(duì)列,如Kafka、RabbitMQ等,服務(wù)之間通過消息隊(duì)列進(jìn)行異步通信。
  • HTTP客戶端:使用Java內(nèi)置的HTTP客戶端,如HttpURLConnection、Apache HttpClient等,通過HTTP協(xié)議調(diào)用其他服務(wù)的接口。

無論使用哪種方式,都需要了解其他服務(wù)的接口定義和調(diào)用方式,以及網(wǎng)絡(luò)通信的安全性和穩(wěn)定性等方面的考慮。同時(shí),需要注意接口版本的兼容性和錯(cuò)誤處理等問題。

這里提供一個(gè)使用Java內(nèi)置的HttpURLConnection進(jìn)行POST請求的示例代碼:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class HttpPostExample {
 
    private static final String POST_URL = "http://engine-server-host:port/api/client/data/push";
    private static final String USER_AGENT = "Mozilla/5.0";
 
    public static void main(String[] args) throws IOException {
        URL obj = new URL(POST_URL);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
 
        // 添加請求頭
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
 
        // 設(shè)置POST請求體
        String postBody = "your_post_body_here";
        con.setDoOutput(true);
        try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
            wr.writeBytes(postBody);
            wr.flush();
        }
 
        // 發(fā)送POST請求并獲取響應(yīng)
        int responseCode = con.getResponseCode();
        System.out.println("POST Response Code :: " + responseCode);
 
        try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) {
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            System.out.println("POST Response :: " + response.toString());
        }
    }
}

在代碼中,需要將POST_URL替換為引擎端的API接口地址,將postBody替換為要發(fā)送的POST請求體。

需要注意的是,這里的POST請求體需要按照引擎端API接口的要求進(jìn)行格式化。 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Java ZooKeeper分布式鎖實(shí)現(xiàn)圖解

    Java ZooKeeper分布式鎖實(shí)現(xiàn)圖解

    ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等
    2022-03-03
  • 解決jmap命令打印JVM堆信息異常的問題

    解決jmap命令打印JVM堆信息異常的問題

    這篇文章主要介紹了解決jmap命令打印JVM堆信息異常的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • SpringBoot DevTools之開發(fā)工具與熱部署機(jī)制詳解

    SpringBoot DevTools之開發(fā)工具與熱部署機(jī)制詳解

    本文將深入探討Spring Boot DevTools的核心功能、配置方法以及最佳實(shí)踐,幫助開發(fā)者顯著提升開發(fā)效率,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • springboot如何使用redis的incr創(chuàng)建分布式自增id

    springboot如何使用redis的incr創(chuàng)建分布式自增id

    這篇文章主要介紹了springboot如何使用redis的incr創(chuàng)建分布式自增id,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Intellij IDEA 添加jar包的三種方式(小結(jié))

    Intellij IDEA 添加jar包的三種方式(小結(jié))

    這篇文章主要介紹了Intellij IDEA 添加jar包的三種方式(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • JAVA獲取CLASSPATH路徑的方法詳解

    JAVA獲取CLASSPATH路徑的方法詳解

    這篇文章主要介紹了Java 中獲取類路徑 classpath 的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Java日常記錄之查看Maven本地倉庫的位置

    Java日常記錄之查看Maven本地倉庫的位置

    這篇文章主要介紹了Maven本地倉庫的用途和配置方法,它提供了查看、修改本地倉庫路徑的步驟,包括檢查settings.xml文件、使用Maven命令和查看輸出日志,需要的朋友可以參考下
    2024-12-12
  • window版 IntelliJ IDEA 快捷鍵圖文教程

    window版 IntelliJ IDEA 快捷鍵圖文教程

    本文通過圖文并茂的形式給大家介紹了window版 IntelliJ IDEA 快捷鍵的操作方法,需要的朋友參考下吧
    2018-02-02
  • Java Spring數(shù)據(jù)單元配置過程解析

    Java Spring數(shù)據(jù)單元配置過程解析

    這篇文章主要介紹了Java Spring數(shù)據(jù)單元配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • web.xml?SpringBoot打包可執(zhí)行Jar運(yùn)行SpringMVC加載流程

    web.xml?SpringBoot打包可執(zhí)行Jar運(yùn)行SpringMVC加載流程

    這篇文章主要為大家介紹了web.xml?SpringBoot打包可執(zhí)行Jar運(yùn)行SpringMVC加載流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評論