【问题标题】:RestTemplate returns null fields for specified objectRestTemplate 返回指定对象的空字段
【发布时间】:2017-02-16 14:12:30
【问题描述】:

我有以下try 块,我期待来自RestTemplateexchange 方法的响应:

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>

【问题讨论】:

  • 你能分享一个示例响应吗?
  • 我已经用响应示例更新了我的问题

标签: xml spring-boot resttemplate


【解决方案1】:

我解决了在我的pom.xml 文件中添加jackson 依赖项的问题:

        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
        </dependency>

【讨论】:

  • 我遇到了同样的问题,但您的解决方案不起作用。
  • 我理解我的问题。 restTemplate.exchange 方法不适用于我的实际 java 版本 1.8.0.151,我回到 1.8.0.72 它工作正常。最近的 java 版本发生了什么?
猜你喜欢
  • 2012-06-22
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 2021-07-13
相关资源
最近更新 更多