Java restTemplate交换经常导致错误

Java restTemplate交换经常导致错误,java,android,spring,rest,resttemplate,Java,Android,Spring,Rest,Resttemplate,在我的Android应用程序中,我尝试通过restemplate.exchange发出GET请求,但它经常导致400错误,很少是200响应 获取“的请求”http://someURL/items/modified/2018-12-20T12%253A47%253A43%252B01%253A00“结果是400();调用错误处理程序 org.springframework.web.client.HttpClientErrorException:400 我试着用编码和解码的参数执行请求,但问题是一样

在我的Android应用程序中,我尝试通过restemplate.exchange发出GET请求,但它经常导致400错误,很少是200响应

获取“的请求”http://someURL/items/modified/2018-12-20T12%253A47%253A43%252B01%253A00“结果是400();调用错误处理程序

org.springframework.web.client.HttpClientErrorException:400

我试着用编码和解码的参数执行请求,但问题是一样的。唯一改变的是请求中的时间戳。我不认为这是一个后端问题,因为我在同一个界面上通过Swagger和Postman做了几个请求,所有请求都正常工作。我还尝试将SpringAndroid升级到2.0.0.M3版本,但仍然存在同样的问题

String url = ServiceAppConstants.HOSTNAME + ServiceAppConstants.REST_ITEMS_MODIFIED +                             URLEncoder.encode(lastSynchronisationDate);
try {
  HttpEntity<String> httpEntity = RestServiceUtils.getHttpEntity(context);
  RestTemplate restTemplate = new RestTemplate();
  restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

   // runs in the error here
   ResponseEntity<ArrayList> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, ArrayList.class); 
   items= response.getBody();
   items = mapper.convertValue(items, new TypeReference<List<Items>>(){});
} catch (RestClientException e) {
    /* do stuff */
}
String url=ServiceAppConstants.HOSTNAME+ServiceAppConstants.REST\u ITEMS\u MODIFIED+urlcoder.encode(lastSynchronizationDate);
试一试{
HttpEntity HttpEntity=RestServiceUtils.getHttpEntity(上下文);
RestTemplate RestTemplate=新RestTemplate();
restemplate.getMessageConverters().add(新映射Jackson2HttpMessageConverter());
//在错误中运行
反应性

如果请求是通过虚张声势发送的,那么它就是这样的

使用新的HttpEntity(标题);(不带“参数”)

“parameters”字符串是根据HttpEntity的请求主体
这可能会导致问题。

您是否尝试过在没有转换器的情况下执行GET请求?仅使用ResponseEntity res=rest.exchange(…),或者可能是没有“参数”的标头,仅使用新的HttpEntity(标头)?看起来像是删除了“参数”解决这个问题。我完全不知道为什么这个方法可以解决它,但它是有效的。非常感谢。这篇文章是作为一个答案,我会接受它:)
String url = ServiceAppConstants.HOSTNAME + ServiceAppConstants.REST_ITEMS_MODIFIED +                             URLEncoder.encode(lastSynchronisationDate);
try {
  HttpEntity<String> httpEntity = RestServiceUtils.getHttpEntity(context);
  RestTemplate restTemplate = new RestTemplate();
  restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

   // runs in the error here
   ResponseEntity<ArrayList> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, ArrayList.class); 
   items= response.getBody();
   items = mapper.convertValue(items, new TypeReference<List<Items>>(){});
} catch (RestClientException e) {
    /* do stuff */
}