1

次のように、Spring Rest テンプレートを使用して Rest Webservice を呼び出します。

ResponseEntity<String> response = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, entity, String.class); 

次のように文字列形式で出力を取得します

<Info xmlns="http://schemas.test.org/2009/09/Tests.new" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<FirstName>FirstName</FirstName>
<LastName>LastName</LastName>
<TestGuid>Guid</TestGuid>
<TestUID>1</TestUID>
<Token>token</Token>
<TestUserID>14</TestUserID>
</Info>

次のようにJavaクラスにアンマーシャリングしようとすると

ResponseEntity<Info> response = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, entity, Info.class)

Info クラスは次のように定義されます。

@XmlRootElement(name = "Info", namespace = "http://schemas.test.org/2009/09/Tests.new")
public class Info implements Serializable{

    private String FirstName;
    private String LastName;
    private String TestGuid;
    private String TestUID;
    private String Token;
    private String TestUserID;

    //getters and setter

}   

応答の http コードが 500 の場合、応答のタイプは info ではなく、他のタイプの infoException です。

Http 応答コードに応じて出力を非整列化するように resttemplate に指定できますか?

4

3 に答える 3

0

XML からクラスへのマッピングが原因で、その XML から POJO へのシリアル化を解除できません。このPOJOを使ってみてください。

public class Info implements Serializable{

    private String TestGuid;

    private String TestUID;

    private String FirstName;

    private String xmlns;

    private String Token;

    private String LastName;

    private String TestUserID;

    //getters and setter
}
于 2016-06-02T06:53:30.143 に答える