2016-11-21 15 views
0

Springアプリケーションでは、サードパーティサービスを呼び出しています。次のように私は、XML要求を作っていますRestテンプレート:レスポンスを抽出できませんでした:適切でないHttpMessageConverterがXMLレスポンスを取得し、JAVAオブジェクトにバインドされていませんでした。

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.drf.fundingapi.model.response.pojo.Fmxresponse] and content type [text/html;charset=ISO-8859-1] 
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:884) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:868) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:622) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:498) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 
    at com.drf.fundingapi.apiclient.RestTemplateBase.performRequest(RestTemplateBase.java:17) ~[classes/:na] 
    at com.drf.fundingapi.apiclient.ApiClient.performPost(ApiClient.java:64) ~[classes/:na] 
    at com.drf.fundingapi.service.FundingService.getAccountBalanceRequest(FundingService.java:255) ~[classes/:na] 
    at com.drf.fundingapi.controller.FundingController.getGeneralOperationBalance(FundingController.java:100) ~[classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101] 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE] 

Fmxresponse fmxresponse = apiClient.performPost(url, MediaType.APPLICATION_XML_VALUE, requestData, new HashMap<String, String>(), Fmxresponse.class); 

Fmxresponseオブジェクト:Javaオブジェクトにその応答を解析することはできません、私は次のエラーを取得していたときに私は、私は適切にXML応答を得ました次のように

私たちが受け取るXML応答に続いてapp.configを

@Bean 
     public RestTemplate getRestTemplate(){ 
      RestTemplate restTemplate = new RestTemplate(); 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "fmxresponse") 
public class Fmxresponse implements Serializable { 
    private static final long serialVersionUID = -4050582129050191456L; 
    @XmlElement(name = "response") 
    private Response response; 
    public Response getResponse() { 
     return response; 
    } 
    public void setResponse(Response response) { 
     this.response = response; 
    } 
    @Override 
    public String toString() { 
     return "ClassPojo [response = " + response + "]"; 
    } 
} 

<?xml version="1.0" encoding="UTF-8"?> 
<fmxresponse> 
    <response> 
     <error> 
      <code>0</code> 
      <mesg></mesg> 
     </error> 
     <category>generaloperation</category> 
     <function>balance</function> 
     <result> 
      <balance> 
       <type>current</type> 
       <amount>50,000.00</amount> 
      </balance> 
      <balance> 
       <type>available</type> 
       <amount>50,000.00</amount> 
      </balance> 
     </result> 
    </response> 
</fmxresponse> 

いずれかが任意のアイデアを持つことができ、何が間違ってここに起こっているのですか?

答えて

0

返信がtext/htmlのように戻ってきました。text/xmlではありません。

... and content type [text/html;charset=ISO-8859-1] 

あなたはこのコンテンツタイプを扱うか、適切な応答を処理するために、あなたのRestTemplateを設定するには、HttpMessageConverterを作成する必要があります。

RestTemplateインスタンスを設定する方法の例については、Force Spring RestTemplate to use XmlConverterを参照してください。

+0

すぐにお返事いただきありがとうございます。 org.springframework.web.client.RestClientException:リクエストを書き込めませんでした:要求タイプ[java.lang.String]およびコンテンツタイプ[application/xml] – user1310038

+0

これはかなり異なるエラーです。あなたの質問の1つは、回答を読むことであり、これはリクエストを書くことに関するものです。 'String'を' application/xml'と書くことはできません。あなたは何を追加しましたか?このエラーはどこにありますか? – Adam

+0

私は を追加しました@Bean public RestTemplate getRestTemplate() { RestTemplate restTemplate = new RestTemplate(); List > messageConverters = new ArrayList >(); Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter(); リスト mediaTypes = new ArrayList (); mediaTypes.add(MediaType.TEXT_HTML); jaxbMessageConverter.setSupportedMediaTypes(mediaTypes); messageConverters.add(jaxbMessageConverter); restTemplate.setMessageConverters(messageConverters); return restTemplate; } – user1310038

関連する問題