Python 官方文档:入门教程 => 点击学习
目录正文一、POST请求调用二、GET请求调用三、Exchange调用正文 在日常开发过程中,Http接口不仅提供给前端调用,有的时候还需要提供给其他业务方调用,在后台调用http
在日常开发过程中,Http接口不仅提供给前端调用,有的时候还需要提供给其他业务方调用,在后台调用http请求的时候,我们一般使用Http Client客户端调用,java常用的Http客户端有:
下面来详细介绍一下使用RestTemplate来调用Post和Get请求。
在RestTemplate中,对同一种请求方式,一般有两种调用方法:
postForObject/postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)
eg:
void fun() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
// 注意,如果想要使用可变参数来拼接url,那这里的url一定要使用占位符{}替换,并且名称要和可变参数名称一样才能在运行时将占位符位置替换成传入动态参数【可变参数也可以不传,那么这里的url就不需要占位符拼接】
String url = "http://www.sea.com?uid={uid}&username={username}";
String uid = "123";
String username = "sea";
// 因为responseType用的是String类型,所以返回的是一个String类型字符串
String result = restTemplate.postForObject(url, httpEntity, String.class, uid, username);
}
postForObject/postForEntity(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
eg:
void fun() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_jsON);
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
// 注意,如果想要使用可变参数来拼接url,那这里的url一定要使用占位符{}替换,并且名称要和可变参数名称一样才能在运行时将占位符位置替换成传入动态参数
String url = "http://www.sea.com?uid={uid}&username={username}";
Map<String, Object> params = new HashMap<>();
String uid = "123";
String username = "sea";
params.put("uid", uid);
params.put("username", username)
// 因为responseType用的是String类型,所以返回的是一个String类型字符串
String result = restTemplate.postForObject(url, httpEntity, String.class, params);
}
postForObject/postForEntity(URI url, Object request, Class<T> responseType)
eg:
void fun() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
String url = "http://www.sea.com";
MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>();
multiValueMap.put("uid", 123);
multiValueMap.put("username", "sea");
// 不再使用可变参数绑定url,直接传入绑定后的uri参数
URI uri = UriComponentsBuilder.fromHttpUrl(url).queryParams(multiValueMap).build().encode().toUri();
// 因为responseType用的是String类型,所以返回的是一个String类型字符串
String result = restTemplate.postForObject(uri, httpEntity, String.class);
}
eg: xxforEntity()
void fun() {
Map<String, Object> map = new HashMap<>();
map.put("uid", 123);
map.put("username", "sea");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(map, headers);
String url = "http://www.sea.com";
// 使用xxforEntity,返回的是一个ResponseEntity,里面包含了statusCode(状态码)、Headers(响应头)、body(响应体)
ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, httpEntity, String.class);
}
getForObject/getForEntity(String url, Class<T> responseType, Object... uriVariables)
getForObject/getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables)
getForObject/getForEntity(URI url, Class<T> responseType)
在get请求调用中,除了请求参数中少了Object request【请求头和请求体】,其他的参数和方法调用同上面post的方法调用是一样的
exchange调用可以理解为是一个万能调用,不特定是post还是get类型调用,请求方式由调用者指定。 ps:如果在get请求中需要指定请求头和请求体,而getForXX又不支持方法又不支持设置请求头,此时可以改成用exchange方法来调用,自己往HttpEntity<?> requestEntity参数中设置请求头和体。
以上就是RestTemplate调用POST和GET请求示例详解的详细内容,更多关于RestTemplate调用POST GET的资料请关注编程网其它相关文章!
--结束END--
本文标题: RestTemplate调用POST和GET请求示例详解
本文链接: https://lsjlt.com/news/202714.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0