Spring for Android を使用して XML 応答を解析しようとしています。過去にSpringを実装して JSON 応答を解析することに成功しましたが、何らかの理由で XML に問題が発生しています。
Simple jarをダウンロードして、ビルド パスに追加しました。コンパイル エラーは発生しませんが、実行すると問題が発生します。これが私のコードです:
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("text","xml")));
HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
String url = "MyURL";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());
try{
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
Log.d(TAG, "response - " + responseEntity.getBody());
}catch(HttpMessageNotReadableException e){
Log.d(TAG, "message " + e.getMessage());
}
このコードを実行すると発生するエラーは次のとおりです。
02-11 16:49:28.905: E/AndroidRuntime(5454): FATAL EXCEPTION: Thread-126
02-11 16:49:28.905: E/AndroidRuntime(5454): org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [java.lang.String]
02-11 16:49:28.905: E/AndroidRuntime(5454): at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:632)
02-11 16:49:28.905: E/AndroidRuntime(5454): at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:473)
02-11 16:49:28.905: E/AndroidRuntime(5454): at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:438)
02-11 16:49:28.905: E/AndroidRuntime(5454): at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:414)
02-11 16:49:28.905: E/AndroidRuntime(5454): at com.rounded.rrbcataloguelibrary.RRBCatalogueActivity.getCategories(RRBCatalogueActivity.java:337)
02-11 16:49:28.905: E/AndroidRuntime(5454): at com.rounded.rrbcataloguelibrary.RRBCatalogueActivity$7.run(RRBCatalogueActivity.java:395)
02-11 16:49:28.905: E/AndroidRuntime(5454): at java.lang.Thread.run(Thread.java:856)
エラーは次の行でスローされます。ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
テストするために、これを使用しました:restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
メッセージコンバーターから、適切な応答を文字列として取得しました。
何か案は?