七叶笔记 » java编程 » Java调用第三方http接口的常用方式总结

Java调用第三方http接口的常用方式总结

1.概述

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

在Java项目中调用第三方接口的常用方式有 ①通过JDK网络类Java.net.HttpURLConnection;②通过Apache common封装好的HttpClient;③通过Apache封装好的CloseableHttpClient;④通过OkHttp;⑤通过Spring的RestTemplate;⑥通过hutool的HttpUtil。

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

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

简介:java.net包下的原生java api提供的http请求。 

使用步骤:

1、通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)。

2、设置请求的参数。

3、发送请求。

4、以输入流的形式获取返回内容。

5、关闭输入流。

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

2.2 通过apache common封装好的HttpClient

简介:http client到目前为止最新是5.1版,官网地址:http://hc.apache.org/ 。Http client专为推展而设计,同时为基本http协议提供强大支持,尽管java.net包提供了通过http访问的基本功能,但是未提供许多应用程序所需要功能。

使用步骤:

生成一个HttpClient对象并设置相应的参数;生成一个GetMethod对象或PostMethod并设置响应的参数;用HttpClient生成的对象来执行GetMethod生成的Get方法;处理响应状态码;若响应正常,处理HTTP响应内容;释放连接。无论执行方法是否成功,都必须释放连接。

导入如下jar包:

代码如下:

2.3 通过Apache封装好的CloseableHttpClient

CloseableHttpClient是在HttpClient的基础上修改更新而来的,这里还涉及到请求头token的设置(请求验证),利用fastjson转换请求或返回结果字符串为json格式,当然上面两种方式也是可以设置请求头token、json的,这里只在下面说明。

导入如下jar包:

代码如下:

2.4 通过OkHttp

简介:OkHttp是一个默认有效的HTTP客户端,有效地执行HTTP可以加快您的负载并节省带宽,如果您的服务有多个IP地址,如果第一次连接失败,OkHttp将尝试备用地址。这对于IPv4 + IPv6和冗余数据中心中托管的服务是必需的。OkHttp启动具有现代TLS功能(SNI,ALPN)的新连接,并在握手失败时回退到TLS 1.0,OkHttp支持Android 2.3及更高版本。对于Java,最低要求是1.7。

操作步骤:

1、创建OkhttpClient。

2、mClient执行newCall将Request转化成一个Call。

3、最后call执行excute同步执行,enqueue异步执行。

4、Request主要通过Request.Builder来构建。

5、缓存。

6、取消请求。

导入如下jar包:

代码如下:

2.5 通过Spring的RestTemplate

RestTemple是前三种方式的集大成者,代码编写更加简单,目前可以采用的调用第三方接口有:

delete() 在特定的URL上对资源执行HTTP DELETE操作exchange() 在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中映射得到的execute() 在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象getForEntity() 发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象getForObject() 发送一个HTTP GET请求,返回的请求体将映射为一个对象postForEntity()POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得到的postForObject() POST 数据到一个URL,返回根据响应体匹配形成的对象headForHeaders() 发送HTTP HEAD请求,返回包含特定资源URL的HTTP头optionsForAllow() 发送HTTP OPTIONS请求,返回对特定URL的Allow头信息postForLocation() POST 数据到一个URL,返回新创建资源的URLput() PUT 资源到特定的URL

注意:目前标红的为常用的

操作步骤:

1、使用默认构造方法new一个实例new RestTemplate()。

2、RestTemplate 内部通过调用 doExecute 方法,首先就是获取 ClientHttpRequest。

3、RestTemplate 实现了抽象类 HttpAccessor ,所以可以调用父类的 createRequest。

4、SimpleClientHttpRequestFactory 实现了 ClientHttpRequest,同时实现方法。

5、执行 requestCallback.doWithRequest(request)。

6、执行 response = request.execute()。

7、最后解析response。

首先导入springboot的web包

在启动类同包下创建RestTemplateConfig.java类

然后在Service类(RestTemplateToInterface )中注入使用

具体代码如下:

2.6通过hutool的HttpUtil

 简介:关于Hutool工具类之HttpUtil如何使用可以参考官方文档Hutool之HttpUtil。

导入如下jar包:

代码如下:

3.总结

日常开发中,我们一般使用spring的resttemplate和hutool的HttpUtil偏多,特别是hutool,非常推荐,里面有很多省心的工具类。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持七叶笔记。

相关文章