2011-08-18 62 views
4

我正在使用SpringAndroid M4。SimpleClientHttpRequestFactory只能在SpringAndroid上交替使用

我有下面的代碼片段:

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) 

回答

0

這是否只發生在模擬器上進行測試時? 我有完全相同的問題,但它只發生在我使用模擬器時。 一切正常的設備上正常工作。

+0

nope,設備上也存在問題。每第二次請求都能正常工作因此我只是設法解決問題。捕捉異常,然後在catch代碼中重複請求...這是最簡單的事情,非常髒,但它的工作原理。奧祕...... – virtual82

+0

確實很奇怪。我剛剛注意到在真實設備上顯示的錯誤。不是每個第二個請求,但。我想我必須抓住它並像現在一樣重複請求。 –

+1

您是否嘗試過使用HttpComponentsClientHttpRequestFactory來代替?這似乎解決了這個問題。 你見過這個線程嗎? http://forum.springsource.org/showthread.php?124053-IllegalArgumentException-No-matching-constant-for-1-after-upgrading-from-M4-to-RC –

0

這似乎是SimpleClientHttpResponse中的一個錯誤。在我的情況下,它似乎沒有任何影響,儘管HTTP返回代碼可能不正確。

通過將其替換爲HttpComponentsClientHttpRequestFactory,問題似乎已消失。

相關問題