RestTemplate返回指定对象
问题描述:
我有以下try
块中我期待从exchange
方法的RestTemplate
响应空字段:RestTemplate返回指定对象
try{
response = restOperations.exchange("http://localhost:8080/midpoint/ws/rest/users/00000000-0000-0000-0000-000000000002",
HttpMethod.GET,
new HttpEntity<String>(createHeaders("administrator", "5ecr3t")),
UserType.class);
logger.info(response.getBody());
}
我期待UserType
类型的响应,该请求被执行正确的状态为200 OK,但UserType
模型的所有字段都为空,因此我从REST调用收到的响应不是绑定(映射)。 的UserType
必填字段注释为:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "UserType", propOrder = {
"fullName",
"givenName",
"familyName",
"additionalNames",
"locality",
"assignment",
"activation",
"specialWithInternalizedName",
"singleActivation",
"multiActivation",
"multiActivationCopy",
"singleConstruction",
"multiConstruction",
"multiConstructionCopy"
})
服务器响应的一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<user xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3" xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3" xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3" xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3" oid="00000000-0000-0000-0000-000000000002" version="194">
<name>administrator</name>
<metadata>
<requestTimestamp>2017-01-31T14:04:14.575+01:00</requestTimestamp>
<createTimestamp>2017-01-31T14:04:14.658+01:00</createTimestamp>
<createChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</createChannel>
</metadata>
<assignment id="1">
<metadata>
<requestTimestamp>2017-01-31T14:04:14.575+01:00</requestTimestamp>
<createTimestamp>2017-01-31T14:04:14.658+01:00</createTimestamp>
<createChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</createChannel>
</metadata>
<targetRef oid="00000000-0000-0000-0000-000000000004" type="c:RoleType" />
<activation>
<effectiveStatus>enabled</effectiveStatus>
</activation>
</assignment>
<activation>
<administrativeStatus>enabled</administrativeStatus>
<effectiveStatus>enabled</effectiveStatus>
<enableTimestamp>2017-01-31T14:04:14.598+01:00</enableTimestamp>
<lockoutStatus>normal</lockoutStatus>
</activation>
<iteration>0</iteration>
<iterationToken />
<roleMembershipRef oid="00000000-0000-0000-0000-000000000004" type="c:RoleType" />
<fullName>midPoint Administrator</fullName>
<givenName>midPoint</givenName>
<familyName>Administrator</familyName>
<credentials>
<password>
<lastSuccessfulLogin>
<timestamp>2017-02-16T17:01:21.861+01:00</timestamp>
</lastSuccessfulLogin>
<previousSuccessfulLogin>
<timestamp>2017-02-16T16:44:00.493+01:00</timestamp>
</previousSuccessfulLogin>
<metadata>
<createTimestamp>2017-01-31T14:04:14.598+01:00</createTimestamp>
<createChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</createChannel>
</metadata>
<value>
<t:encryptedData>
<t:encryptionMethod>
<t:algorithm>http://www.w3.org/2001/04/xmlenc#aes128-cbc</t:algorithm>
</t:encryptionMethod>
<t:keyInfo>
<t:keyName>HZZUFItbX7fYQO41GT3PHJtIf2Q=</t:keyName>
</t:keyInfo>
<t:cipherData>
<t:cipherValue>SZusPiIgcrzoqDfm9uTzmrI6r4lG/OolTRIc7V/0aVo=</t:cipherValue>
</t:cipherData>
</t:encryptedData>
</value>
</password>
</credentials>
</user>
答
我解决我的问题添加jackson
依赖性在我pom.xml
文件:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
+0
我遇到了同样的问题,但是您的解决方案无法正常工作。 –
+0
我明白我的问题。 restTemplate.exchange方法不适用于我的实际Java版本1.8.0.151,我回到1.8.0.72它工作正常。最近的java版本发生了什么? –
你能分享一个示例回应吗? – Coder
我已经更新了我的问题,并提供了回复示例 –