Tuesday 15 April 2014

java - RestTemplate unmarshal errorBody -


Good day.

I am writing a REST client on spring. The server can send an XML or JSON marshalled object in response. In the case of general request / feedback, its work fine. My Restemplate client can recover from the response, but in case of a 404 error, the server sends an error descriptor in the body of the response in the form of XML / JSON.

I do not know how to remove the error request body.

The rest of my client code:

  @Service implements public square XsdClientImpl InitializingBean, XsdClient {private static final Logger logger = LoggerFactory.getLogger (XsdClientImpl.class); @ Etwaire @quilifiers ("XSD client rateplatform") personal restaurant template template; Private string base URL; @ Override Public throws XsdInfoType fetch namespace (string namespace) XsdClientException {map & lt; String, string & gt; Wars = Collection Singletnet Map ("namespace", namespace); {Return restTemplate.getForObject (try baseUrl + "/xsd/get/{namespace}.xml", XsdInfoType.class, vars); } Hold (Last HttpClientErrorException E) {// e.getResponseBodyAsByteArray () How to unmarshall it? This XML or JSON return can be null; This is} a piece of Spring Conflict:  
  & lt; Bean id = "Objektmapr" class = "OrgkspringframeworkkhttpkconverterkjsonkJackson2ObjectMapperFactoryBean" P: indentOutput = "true" P: simpleDateFormat = "yyyy-mM-dd'T'HH: mm: ss.SSSZ" & Gt; & Lt; / Bean & gt; & Lt; Bean class = "org.springframework.beans.factory.config.MethodInvokingFactoryBean" P: targetObject- ref = "objectMapper" P: targetMethod = "registerModule" & gt; & Lt; Property Name = "Logic" & gt; & Lt; List & gt; & Lt; Bean class = "com.fasterxml.jackson.datatype.joda.JodaModule" /> & Lt; / List & gt; & Lt; / Property & gt; & Lt; / Bean & gt; & Lt; Bean id = "stringHttpMessageConverter" class = "org.springframework.http.converter.StringHttpMessageConverter" /> & Lt; Bean id = "jaxb2RootElementHttpMessageConverter" class = "org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" / & gt; & Lt; Bean id = "Mapingajaksn 2 Acteepimsej Knauvr" class = "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" & gt; & Lt; Property Name = "ObjectMaper" ref = "ObjectMaper" /> & Lt; / Bean & gt; & Lt; Bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" P: location = "classpath: xsd-client.properties" / & gt; & Lt; Bean square = "org.springframework.web.client.RestTemplate" id = "xsdClientRestTemplate" & gt; & Lt; Property Name = "Message Converters" & gt; & Lt; List & gt; & Lt; Ref bean = "MappingJackson 2 HTTP Message Convertor" /> & Lt; Ref bean = "jaxb2RootElementHttpMessageConverter" /> & Lt; / List & gt; & Lt; / Property & gt; & Lt; / Bean & gt;   

Note: In the general case, the REST server will send the XsdInfoType marshalled object. But there is other kind of error response on the object.

We can do this in the child of RestTemplate : < Pre> HttpMessageConverterExtractor responseExtractor = New HttpMessageConverterExtractor & lt; & Gt; (YourErrorType.class, getMessageConverters ()); Your Erropyt So far = (Your Entrepreneur) Northactor.XTechData (New Client HTPPS Pensions (E) {// Tudo Implementation Interface It is very easy.) You can get all data from `e 'variable // but I think That is the implementation of Spring itself.});

No comments:

Post a Comment