2016-03-10 30 views
6

Invio una richiesta XML su HTTP tramite Spring RestTemplate a un gateway esterno e sto ricevendo una risposta XML.Ignorare lo spazio dei nomi xml durante lo smascheramento in RestTemplate

L'XSD che è stato fornito per convalidare la risposta ha uno spazio dei nomi di destinazione ma la risposta effettiva non contiene il prefisso dello spazio dei nomi. Ho generato le risorse Java utilizzando il XSD e per questo mi sto sotto l'errore quando ottenere risposta da (durante il processo di unmarshalling),

ResponseEntity<Response> responseEntity = restTemplate.exchange(endpointURL, HttpMethod.POST, requestEntity, 
       Response.class); 

L'eccezione è: -

Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Response"). Expected elements are <{http://securetransport.dw/rcservice/xml}Response> 

Ci sono modi per saltare il controllo del namespace da Spring ResponseEntity?

risposta

2

Se i collegamenti sono stati generati con il plug-in jaxb, dovrebbe essere presente un "pacchetto-info.java".

Ad esempio:

@javax.xml.bind.annotation.XmlSchema(namespace = "someurl", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)

Se si rimuove lo spazio dei nomi da l'annotazione dovrebbe funzionare.