第三方接口适配java_Java调用第三方http接口的方式

1. 概述

在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。

在Java项目中调用第三方接口的方式有:

①通过JDK网络类Java.net.HttpURLConnection;

②通过common封装好的HttpClient;

③通过Apache封装好的CloseableHttpClient;

④通过SpringBoot-RestTemplate;

2. Java调用第三方http接口的方式

2.1 通过JDK网络类Java.net.HttpURLConnection

比较原始的一种调用做法,这里把get请求和post请求都统一放在一个方法里面,直接上代码:

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

2.2 通过apache common封装好的HttpClient

httpClient的get或post请求方式步骤:

生成一个HttpClient对象并设置相应的参数;

生成一个GetMethod对象或PostMethod并设置响应的参数;

用HttpClient生成的对象来执行GetMethod生成的Get方法;

处理响应状态码;

若响应正常,处理HTTP响应内容;

释放连接。

导入如下jar包:

commons-httpclient

commons-httpclient

3.1

代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

import com.alibaba.fastjson.JSONObject;

import org.apache.commons.httpclient.*;

import org.apache.commons.httpclient.methods.GetMethod;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.IOException;

import java.io.InputStream;

/**

* @Author: Yang JianQiu

* @Date: 2019/4/28 11:07

*

* HttpClient模拟get、post请求并发送请求参数(json等)

* 【参考资料】

* https://javasam.iteye.com/blog/2117845

* https://blog.csdn.net/qq_28379809/article/details/82898792

*/

public class HttpClientToInterface {

/**

* httpClient的get请求方式

* 使用GetMethod来访问一个URL对应的网页实现步骤:

* 1.生成一个HttpClient对象并设置相应的参数;

* 2.生成一个GetMethod对象并设置响应的参数;

* 3.用HttpClient生成的对象来执行GetMethod生成的Get方法;

* 4.处理响应状态码;

* 5.若响应正常,处理HTTP响应内容;

* 6.释放连接。

* @param url

* @param charset

* @return

*/

public static String doGet(String url, String charset){

/**

* 1.生成HttpClient对象并设置参数

*/

HttpClient httpClient = new HttpClient();

//设置Http连接超时为5秒

httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

/**

* 2.生成GetMethod对象并设置参数

*/

GetMethod getMethod = new GetMethod(url);

//设置get请求超时为5秒

getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);

//设置请求重试处理,用的是默认的重试处理:请求三次

getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());

String response = "";

/**

* 3.执行HTTP GET 请求

*/

try {

int statusCode = httpClient.executeMethod(getMethod);

/**

* 4.判断访问的状态码

*/

if (statusCode != HttpStatus.SC_OK){

System.err.println("请求出错:" + getMethod.getStatusLine());

}

/**

* 5.处理HTTP响应内容

*/

//HTTP响应头部信息,这里简单打印

Header[] headers = getMethod.getResponseHeaders();

for (Header h: headers){

System.out.println(h.getName() + "---------------" + h.getValue());

}

//读取HTTP响应内容,这里简单打印网页内容

//读取为字节数组

byte[] responseBody = getMethod.getResponseBody();

response = new String(responseBody, charset);

System.out.println("-----------response:" + response);

//读取为InputStream,在网页内容数据量大时候推荐使用

//InputStream response = getMethod.getResponseBodyAsStream();

} catch (HttpException e) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值