SimpleClientHttpRequestFactory仅在SpringAndroid上交替工作

时间:2011-08-18 08:04:38

标签: android spring resttemplate

我使用的是SpringAndroid M4。

我有以下代码片段:

RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
HttpEntity<?> requestEntity = new HttpEntity<Object>(myHeader());
final String url = "my_url";
ResponseEntity<String> responseEntity =
    restTemplate.exchange(url,HttpMethod.GET, requestEntity, String.class);

信不信由它交替运作(第一次是,然后是否,然后是,然后是否,依此类推......)

当它不起作用时,这是错误的堆栈跟踪(在restTemplate.exchange方法上抛出错误):

08-18 17:55:09.919: ERROR/(7722): java.lang.IllegalArgumentException: No matching constant for [-1]
08-18 17:55:09.919: ERROR/(7722):     at org.springframework.http.HttpStatus.valueOf(HttpStatus.java:380)
08-18 17:55:09.919: ERROR/(7722):     at org.springframework.http.client.SimpleClientHttpResponse.getStatusCode(SimpleClientHttpResponse.java:48)
08-18 17:55:09.919: ERROR/(7722):     at org.springframework.web.client.DefaultResponseErrorHandler.hasError(DefaultResponseErrorHandler.java:45)
08-18 17:55:09.919: ERROR/(7722):     at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:463)
08-18 17:55:09.919: ERROR/(7722):     at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:425)
08-18 17:55:09.919: ERROR/(7722):     at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:401)

2 个答案:

答案 0 :(得分:0)

只有在模拟器上进行测试时才会发生这种情况吗? 我有完全相同的问题,但它只发生在我使用模拟器时。 在真实设备上一切正常。

答案 1 :(得分:0)

这似乎是SimpleClientHttpResponse中的错误。在我的情况下,它似乎没有任何影响,尽管HTTP返回代码可能不正确。

将其替换为HttpComponentsClientHttpRequestFactory,问题似乎已消失。