在我的安卓应用程序中,我试图通过restTemplate.exchange发出GET请求,但它经常导致400错误,很少是200响应。
GET request for "http://someURL/items/modified/2018-12-20T12%253A47%253A43%252B01%253A00" resulted in 400 (); invoking error handler
org.springframework.web.client.HttpClientErrorException: 400
我试着用编码和解码的参数做请求,但这是相同的问题。唯一改变的是请求中的时间戳。我不认为这是后端的问题,因为我在同一个界面上通过Swagger和Postman做了几个请求,所有的请求都没有问题。我也尝试将spring-android更新到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 */
}要设置标记,请执行以下操作
@NonNull
public static HttpEntity<String> getHttpEntity(Context context) {
UserStorage userStorage = new UserStorage(context);
HttpHeaders headers = new HttpHeaders();
try {
String token = userStorage.getJsonWebToken();
headers.set(ServiceAppConstants.HEADER_SECURITY_TOKEN, token);
}catch (Exception ex){
Log.e(RestServiceUtils.class.getName(), "Could not get json web token", ex);
}
return new HttpEntity<String>("parameters", headers);
}这就是请求在android分析器中的样子

如果请求是通过swagger发送的,则会显示如下所示

发布于 2018-12-21 21:55:40
使用新的HttpEntity(headers);(不带参数)
根据HttpEntity documentation,"parameters“字符串是可能导致问题的请求正文。
https://stackoverflow.com/questions/53882722
复制相似问题