rest-template-POST使用
POST请求:
- 使用方法:postForEntity(String url, @Nullable Object request, Class
responseType, Object… uriVariables) - 参数使用body体传输:HttpEntity
代码示例如下:
StringBuilder stringBuilder = new StringBuilder(URL).append("/post/testForJson");
String postUrl = stringBuilder.toString();
HashMap params = new HashMap(2);
params.put("name", "gjx");
params.put("age", 10);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);
ResponseEntity<String> result = restTemplate.postForEntity(postUrl, httpEntity, String.class);
log.info("post test json result:{}", result.getBody());
request 请求信息:
url地址后追加url参数代码示例:
StringBuilder stringBuilder = new StringBuilder(URL).append("/post/testForJsonWithUrlParam?urlParam={urlParam}");
String postUrl = stringBuilder.toString();
HashMap params = new HashMap(2);
params.put("name", "gjx");
params.put("age", 10);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);
ResponseEntity<String> result = restTemplate.postForEntity(postUrl, httpEntity, String.class,"urlParam");
log.info("post test json result:{}", result.getBody());
输出:
post、put系列。Object request
进行body体数据传输,以及请求头设置等。Map<String, ?> uriVariables
或者 Object... uriVariables
进行url参数拼接赋值。url格式为?k={kname}&...
restTemplate–GET使用
Get请求:
- 使用方法:getForEntity(String var1, Class var2, Object… var3)
- 参数拼接形式:url+?k={k}&v={v}
代码示例:
String k = "this is a get test?";
String v = "yes";
// 第一种 getForEntity(String var1, Class<T> var2, Object... var3)
StringBuilder stringBuilder = new StringBuilder(URL).append("/get/testUrlencoded")
.append("?k={k}&v={v}");
String testUrl = stringBuilder.toString();
ResponseEntity<String> result = restTemplate.getForEntity(testUrl, String.class, k, v);
log.info("first -result:{}", result.getBody());
request请求详情:
- 使用方法:getForEntity(String url, Class responseType, Map<String, ?>
uriVariables)参 - 数拼接形式:url+?k={k}&v={v}
代码示例:
log.info("test get second====================================================");
HashMap params = new HashMap(2);
params.put("k", "this is second test?");
params.put("v", "yes");
ResponseEntity<String> result2 = restTemplate.getForEntity(testUrl, String.class, params);
log.info("second -result:{}", result2.getBody());
request请求详情:
- 使用方法:getForEntity(URI url, Class responseType)
- 参数拼接形式:url+?k={k}&v={v}
代码示例:
log.info("test get third====================================================");
HashMap params2 = new HashMap(2);
params2.put("k", "this is third test?");
params2.put("v", "yes");
UriComponents uriComponents = UriComponentsBuilder.fromUriString(testUrl).build().expand(params2);
URI uri = uriComponents.encode().toUri();
ResponseEntity<String> result3 = restTemplate.getForEntity(uri, String.class);
log.info("third -result:{}", result3.getBody());
request请求详情:
以上是使用restTemplate进行http请求时,对post与get的使用示例,其他的请求方式,使用方式类似。
restTemplate提供两种传输数据的方式:1、body,2、url拼接
body数据需要放置在方法的 Object request
中。可以定义HttpEntity进行参数封装。
本文中所涉及的完整代码可从github上下载:https://github.com/guojixiang/rest-template