Parameters RestTemplate使用请求参数获取请求
我必须调用REST Web服务,我计划使用RestTemplate。我查看了有关如何发出GET请求的示例,如下所示Parameters RestTemplate使用请求参数获取请求,parameters,get,request,rest-client,resttemplate,Parameters,Get,Request,Rest Client,Resttemplate,我必须调用REST Web服务,我计划使用RestTemplate。我查看了有关如何发出GET请求的示例,如下所示 String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class,"42","21"); 在我的例子中,RESTful url如下所示。在这种情况下如何使用RestTemplate http://example.com/ho
String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class,"42","21");
在我的例子中,RESTful url如下所示。在这种情况下如何使用RestTemplate
http://example.com/hotels?state=NY&country=USA
因此,我的问题是如何为GET请求发送请求参数?占位符对任一类型的url都起相同的作用,只需执行以下操作即可
String result = restTemplate.getForObject("http://example.com/hotels?state={state}&country={country}", String.class,"NY","USA");
或者更好的是,使用hashmap进行实名匹配-当向RESTful服务器发出请求时,在许多情况下,它需要向服务器发送查询参数、请求正文(如果是
POST
和PUT
请求方法)以及请求中的头
在这种情况下,可以使用构建URI字符串,如果需要,可以使用进行编码,并使用如下方式发送:
public ResponseEntity requestRestServerWithGetMethod()
{
HttpEntity实体=新的HttpEntity(requestHeaders);//requestHeaders属于HttpHeaders类型
UriComponentsBuilder=UriComponentsBuilder.FromUristing(rawValidUrl)//rawValidUrl=http://example.com/hotels
.queryParams(
(LinkedMultiValueMap)allRequestParams);//必须为所有查询参数生成allRequestParams
UriComponents UriComponents=builder.build().encode();//encode()是为了确保像{,}这样的字符被保留并且没有编码。如果不需要,请跳过。
ResponseEntity ResponseEntity=restTemplate.exchange(uriComponents.toUri(),HttpMethod.GET,
实体、字符串、类);
返回响应性;
}
public ResponseEntity requestRestServerWithPostMethod()
{
HttpEntity实体=新的HttpEntity(requestBody,requestHeaders);//requestBody为字符串类型,requestHeaders为HttpHeaders类型
UriComponentsBuilder=UriComponentsBuilder.FromUristing(rawValidUrl)//rawValidUrl=http://example.com/hotels
.queryParams(
(LinkedMultiValueMap)allRequestParams);//必须为所有查询参数生成allRequestParams
UriComponents UriComponents=builder.build().encode();//encode()是为了确保像{,}这样的字符被保留并且没有编码。如果不需要,请跳过。
ResponseEntity ResponseEntity=restemplate.exchange(uriComponents.toUri(),HttpMethod.POST,
实体、字符串、类);
返回响应性;
}