restTemplate 使用指南(一)

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上下载:

经验分享 程序员 微信小程序 职场和发展