ras*_*n58 49 spring android get http resttemplate
如何使用Spring RestTemplate发送GET请求?其他问题使用POST,但我需要使用GET.当我运行它时,程序继续工作,但似乎网络被阻塞,因为这是在AsyncTask中,当我在单击此按钮后尝试运行另一个asynctask时,它们将无法工作.
我试过了
String url = "https://api.blah.com/2.0/search/cubes?w=jdfkl&whitespace=1";
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("Bearer", accessToken);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //copied this from somewhere else, not sure what its for
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
HttpMessageConverter<String> stringConverter = new StringHttpMessageConverter();
FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
List<HttpMessageConverter<?>> msgConverters = new ArrayList<HttpMessageConverter<?>>();
msgConverters.add(formConverter);
msgConverters.add(new MappingJacksonHttpMessageConverter());
msgConverters.add(stringConverter);
template.setMessageConverters(msgConverters);
//SetSearchResponseData is my custom class to store the incoming JSON
ResponseEntity<SetSearchResponseData> result = template.exchange(url, HttpMethod.GET, request, SetSearchResponseData.class);
//If I was using post, i could have done SetSearchResponseDataresponse = restTemplate.postForObject(url, request, SetSearchResponseData.class);
Run Code Online (Sandbox Code Playgroud)
Ric*_*ish 127
RestTemplate getForObject()
方法不支持设置标头.解决方案是使用该exchange()
方法.
因此,而不是restTemplate.getForObject(url, String.class, param)
(没有标题),使用
HttpHeaders headers = new HttpHeaders();
headers.set("Header", "value");
headers.set("Other-Header", "othervalue");
...
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> response = restTemplate.exchange(
url, HttpMethod.GET, entity, String.class, param);
Run Code Online (Sandbox Code Playgroud)
最后,response.getBody()
用来获得你的结果.
这个问题与这个问题类似.
有相应的getForObject
方法是 的 HTTP GET 等价物postForObject
,但它们似乎无法满足您对“带有标头的 GET”的要求,因为无法在任何调用上指定标头。
查看 JavaDoc,没有特定于 HTTP GET 的方法允许您也提供标头信息。不过,还有其他选择,您已经找到并正在使用其中之一。这些exchange
方法允许您提供一个HttpEntity
表示请求详细信息(包括标头)的对象。这些execute
方法允许您指定RequestCallback
可以在调用时从中添加标头的 。
归档时间: |
|
查看次数: |
74386 次 |
最近记录: |