使用RestTemplate发起Http请求

这里主要记录一下get请求和post请求的使用。
首先,看一下啊RestTemplate的源码方法:
方法
可以看到两种请求得方法大同小异。XXForEntity返回的是ResponseEntity类型的数据,其中包含了头信息和返回内容。而XXForObject返回的是约定好的一个类型,其中只有返回的内容信息。
postForLocation返回了一个URI对象,这个指的是新资源的地址。
下面来看看具体的代码:

RestTemplate restTemplate = new RestTemplate();
// 无参
ResponseEntity<String> responseEntity1 =
restTemplate.getForEntity("http://localhost:8081/apppaydemo/apppay/test.do",String.class);
// 多参数
ResponseEntity<String> responseEntity2 =
restTemplate.getForEntity("http://localhost:8081/apppaydemo/apppay/test.do?m={1}&n={2}",String.class, "1", "2");
Map<String, Object> map = new HashMap<>();
map.put("m", "你好");
map.put("n", 111);
// map参数
ResponseEntity<String> responseEntity3 =
restTemplate.getForEntity("http://localhost:8081/apppaydemo/apppay/test.do?m={m}&n={n}",String.class, map);

上面的代码演示了get请求的XXForEntity的三种方式。其实看源码可以发现,这些方法都很类似,很容易理解。其中需要注意的是传参的方式,比如第二种多参数的形式,在url地址中用数字指代参数,比如n={1}表示后面多参数的第一个参数。而map参数则用key代替。
除了get,post请求,RestTemplate还定义了delete,put等请求的方法。也可以直接使用exchange方法,只需要用HttpMethod枚举类来指定具体的请求类型就行了。

相对于HttpClient的方式,RestTemplate确实简单了许多。其提供的功能也很全面。有兴趣的可以看看源码。

猜你喜欢

转载自blog.csdn.net/qq_19656425/article/details/80572241