spring - HTTP 使用 RestTemplate 获取 header

标签 spring http get 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);

最佳答案

RestTemplate getForObject() 方法不支持设置 header 。解决方案是使用 exchange()方法。

所以代替 restTemplate.getForObject(url, String.class, param) (没有标题),使用

HttpHeaders headers = new HttpHeaders();
headers.set("Header", "value");
headers.set("Other-Header", "othervalue");
...

HttpEntity<Void> requestEntity = new HttpEntity<>(headers);

ResponseEntity<String> response = restTemplate.exchange(
    url, HttpMethod.GET, requestEntity, String.class, param);

最后,使用 response.getBody() 得到你的结果。

这个问题类似于 this question .

关于spring - HTTP 使用 RestTemplate 获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16781680/

相关文章:

eclipse - 使用 Eclipse 的 Spring Web Flow 教程

http - 如何处理在给出 HTTP 响应过程中失败的情况?

php - 处理参差不齐的(移动)连接和 API

http - ETag 的语法?

python - PYTHON获取列表的最后一项,即使为空

java - Spring data JPA - 没有找到依赖的合格bean

java - SQL 错误 17268 : Year out of range (Java/Spring)

php - 传递的数组丢失除第一个元素以外的所有元素

java - 从 MySQL 数据库获取时抛出 TransactionSystemException | java.lang.OutOfMemory错误: Java heap space

php - 简单的单用户登录页面