Spring 使用resttemplate从xml解组对象时出错
我正在使用spring的resttemplate调用rest api获取错误以解组xml对象我的代码是:-Spring 使用resttemplate从xml解组对象时出错,spring,resttemplate,Spring,Resttemplate,我正在使用spring的resttemplate调用rest api获取错误以解组xml对象我的代码是:- String uri = "http://devd.webservice.com/devpl/api/1.0/credential?apiKey=" + apiKey + "&signature=" + signature + "&timeStamp=" + timeStamp; HttpHeaders requestHeaders = new HttpH
String uri = "http://devd.webservice.com/devpl/api/1.0/credential?apiKey=" + apiKey + "&signature=" + signature + "&timeStamp=" + timeStamp;
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("accountName", accountName);
requestHeaders.set("containerName", containerName);
requestHeaders.set("folderPath", folderPath);
requestHeaders.set("Content-Type","application/xml");
requestHeaders.set("Accept","application/xml");
RestTemplate template = getRestTemplate();
HttpEntity<String> requestEntity = new HttpEntity<String>(requestHeaders);
Credential result =(Credential)template.postForObject(uri,requestEntity,Credential.class);
我的spring配置文件:-
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean id="messageConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="xstreamMarshaller" />
<property name="unmarshaller" ref="xstreamMarshaller" />
</bean>
</list>
</property>
</bean>
<bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases">
<props>
<prop key="credential">com.simplidrivechn.netmagicsolutions.bean.Credential</prop>
</props>
</property>
</bean>
</beans>
请帮助我解决此错误查看您的异常,您的spring上下文中似乎没有正确设置
XStreamMarshaller的
别名。您必须确保键是“别名”,即案例中的根元素。“凭证”是您试图反序列化的xml响应的根元素吗?请注意,别名区分大小写。下面的代码适合我。注意别名.put(“person”,person.class)代码>我的xml响应具有根元素“person”。如果我把这个键改成“Person”,比如aliases.put(“Person”,Person.class)代码>我和你一样也有例外
XStreamMarshaller marshaller = new XStreamMarshaller();
Map<String, Class> aliases = new HashMap<String, Class>();
aliases.put("person", Person.class);
marshaller.setAliases(aliases);
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter(
marshaller, marshaller);
List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
converters.add(converter);
template.setMessageConverters(converters);
HttpEntity request = new HttpEntity(null, headers);
ResponseEntity<Person> response = template.exchange(url,
HttpMethod.GET, request, Person.class);
XStreamMarshaller marshaller=new XStreamMarshaller();
映射别名=新HashMap();
别名.put(“person”,person.class);
marshaller.setalias(别名);
MarshallingHttpMessageConverter=新的MarshallingHttpMessageConverter(
马歇尔勒,马歇尔勒);
列表>();
转换器。添加(转换器);
模板.setMessageConverters(转换器);
HttpEntity请求=新的HttpEntity(空,标题);
ResponseEntity response=template.exchange(url,
HttpMethod.GET、请求、Person.class);
另一种定义别名的方法是自动扫描
<bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="autodetectAnnotations" value="true"/>
<property name="annotatedClasses">
<array>
<value>com.simplidrivechn.netmagicsolutions.bean.Credential</value>
</array>
</property>
</bean>
com.simplidrivechn.netmagicsolutions.bean.Credential
XStreamMarshaller marshaller = new XStreamMarshaller();
Map<String, Class> aliases = new HashMap<String, Class>();
aliases.put("person", Person.class);
marshaller.setAliases(aliases);
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter(
marshaller, marshaller);
List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
converters.add(converter);
template.setMessageConverters(converters);
HttpEntity request = new HttpEntity(null, headers);
ResponseEntity<Person> response = template.exchange(url,
HttpMethod.GET, request, Person.class);
<bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="autodetectAnnotations" value="true"/>
<property name="annotatedClasses">
<array>
<value>com.simplidrivechn.netmagicsolutions.bean.Credential</value>
</array>
</property>
</bean>