Spring Boot 网络请求 之 RestTemplate 使用例子
引入SpringBoot依赖
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,可以通过使用ClientHttpRequestFactory指定不同的HTTP请求方式。
方式一:SimpleClientHttpRequestFactory
方式二:发送一个get请求,并接受封装成map
方式三:发送一个get请求,并接受封装成string
方式四:添加消息头
方式五:添加请求参数以及消息头,发送http post请求。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@Test
public
void
getPolicyJson
(
)
{
//设置header
HttpHeaders
httpHeaders
=
new
HttpHeaders
(
)
;
httpHeaders
.
add
(
"Content-Type"
,
"application/json; charset=UTF-8"
)
;
//设置参数
Map
<
String
,
String
>
hashMap
=
new
LinkedHashMap
<
String
,
String
>
(
)
;
hashMap
.
put
(
"random"
,
"1234556"
)
;
hashMap
.
put
(
"orderNo"
,
"Z20170327110912921426"
)
;
hashMap
.
put
(
"requestSource"
,
""
)
;
HttpEntity
<
Map
<
String
,
String
>>
requestEntity
=
new
HttpEntity
<
Map
<
String
,
String
>>
(
hashMap
,
httpHeaders
)
;
//执行请求
RestTemplate
restTemplate
=
new
RestTemplate
(
)
;
ResponseEntity
<String>
resp
=
restTemplate
.
exchange
(
"https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN"
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
)
;
//获取返回的header
List
<String>
val
=
resp
.
getHeaders
(
)
.
get
(
"Set-Cookie"
)
;
System
.
out
.
println
(
val
)
;
//获得返回值
String
body
=
resp
.
getBody
(
)
;
System
.
out
.
println
(
body
.
toString
(
)
)
;
}
|
其他发送网络请求的方法,可以通过JDK自带的,以及httpclient发送请求。
参考文章:
【1】HttpClient 快速入门-编写用GET,POST方法来取得某网页内容的代码
【2】Apache HttpClient 4.3 中文翻译文档