Http调用第三方接口的两种方式《超详细!!!》*

最近在公司做一些调用第三方接口的工作,查阅了一部分的资料和向前辈以及朋友请教,完成了第三方接口的调用,其实主要是通过第三方提供的文档,完成完成签名档的设计,连接请求、以及响应数据,这里提供两种方式(超详细!!)

*#######最重要的是可以直接使用!!!!########

两种方式都可以直接使用,代码如下

封装HTTP链接请求(有参的POST请求)

public static String wlwHttpURLConnection(String url, JSONObject data, String appid, String timestamp ,String sign) {

        StringBuffer sb = new StringBuffer();
        try {
            URL realUrl = new URL(url);

            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            
            //请求方式为post
            connection.setRequestMethod("POST");
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);//自动处理重定向
			
			 // 增加请求头 start
            connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            connection.setRequestProperty("appid", appid);
            connection.setRequestProperty("timestamp", timestamp);
            connection.setRequestProperty("sign" , sign)
            // 增加请求头 end
            connection.connect();**

            DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());// 创建输入输出流,用于往连接里面输出携带的参数
            String query = data.toString();

            dataout.write(query.getBytes("UTF-8"));
            dataout.flush();
            dataout.close();
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
            String lines;
            while ((lines = reader.readLine()) != null) {
                lines = new String(lines.getBytes(), "utf-8");
                sb.append(lines);
            }
            reader.close();
            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();

        }

        return sb.toString();
    }
}

以上代码需要修改的部分就是我隔开的那部分添加请求的部分,也就是你文档中的这一部分:

java 调用第三方接口通用接口 调用第三方接口方法_java


请求头以参数的形式传入从Controller层传入,新手也可以理解为调用该方法的时候传入。调用代码如下:

@RequestMapping("/自己的访问接口")
    public String setDormImei(@RequestBody String body, @RequestParam(value = "Id", required = false) String Id) {
        // 获得请求body
        JSONObject reqBody = new JSONObject();
        // 计算sign值
        String sign = (这里就是计算签名的方法,每一个方法都是不一样的,但是会在文档中说明,按照文档的方式计算,)
		
		 //调用Http接口(传入请求头的参数以及自己调用的ur,以及一下密钥之类的l)
        String res = Utils.wlwHttpURLConnection("http://传入自己调用的第三方地址//", appId, timestamp , sign);
        System.out.println("请求结果: " + res);
		
		//需要返回给前端,return返回值
		return null;

以上就是封装Http调用第三方接口的全部流程,可直接使用更换代码中标注的部分就好

第二种方式使用hutool的工具类 HttpUtil实现第三方的调用

这个就比较简单了
首先加入依赖:

<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.2</version>
        </dependency>

使用工具类HttpUtil实现接口调用,代码如下:

public static String wlwHttpURLConnection(String url, JSONObject reqBody, String appid, String appSecret, String sign) {
        // 获得http请求
        String httpRes= HttpRequest.post(url)
                .body(reqBody.toString())
                .header("Content-Type", "application/json;charset=utf-8")
                .header("appid",appid)
                .header("timestamp",timestamp)
                .header("sign",sign)
                .execute().body();
       return httpRes;
    }
}

在Controller类中调用

@RequestMapping("/自己的访问接口")
    public String setDormImei(@RequestBody String body, @RequestParam(value = "Id", required = false) String Id) {
        JSONObject reqBody = new JSONObject();
        // 计算sign值
        String sign = (这里就是计算签名的方法,每一个方法都是不一样的,但是会在文档中说明,按照文档的方式计算,没有的可以忽略)
		
		 //调用Http接口(传入请求头的参数以及自己调用的ur,以及一下密钥之类的l)
        String res = Utils.wlwHttpURLConnection("http://传入自己调用的第三方地址//", appId, timestamp , sign);
        System.out.println("请求结果: " + res);
		
		//需要返回给前端,return返回值
		return null;

以上就是所有的http第三方接口的调用方式总结,希望对各位有帮助,喜欢的话点一下关注,以后会发一下刚刚步入工作会遇到的一些问题的解决以及总结。