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();
}
}
以上代码需要修改的部分就是我隔开的那部分添加请求的部分,也就是你文档中的这一部分: 请求头以参数的形式传入从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) {
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();
String sign = (这里就是计算签名的方法,每一个方法都是不一样的,但是会在文档中说明,按照文档的方式计算,没有的可以忽略)
String res = Utils.wlwHttpURLConnection("http://传入自己调用的第三方地址//", appId, timestamp , sign);
System.out.println("请求结果: " + res);
return null;
以上就是所有的http第三方接口的调用方式总结,希望对各位有帮助,喜欢的话点一下关注,以后会发一下刚刚步入工作会遇到的一些问题的解决以及总结。
|