Я делаю вызов покоя, используя restemplate, и полезная нагрузка составляет XML. (мы имеем дело с устаревшими серверами) Но когда я отлаживаю XML на сервере, который является весенним приложением (устаревшее, но здесь неактуальное), я вижу, что полезная нагрузка xml заключена в "DeferredDocumentImpl"
Код клиента: Это новая часть, которая добавляется и является простой (поэтому проблема может быть здесь). Также я тестирую, подделывая xml полезную нагрузку jsut для проверки синтаксического анализа:
.....
String xmlString ="<?xml version=\"1.0\" ?>\n"
+ "<myroot>\n"
//node values
+ "</myroot>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_XML);
HttpEntity<Document> request = new HttpEntity<>(document, headers);
final ResponseEntity<String> response = restTemplate.postForEntity(uri, request, String.class);
когда я отлаживаю исходящий вызов, я вижу xml полезную нагрузку, заключенную в «DeferredDocumentImpl»
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "POST /myuri HTTP/1.1[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Accept: text/plain, application/xml, text/xml, application/json, application/*+xml, application/*+json, */*[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "X-Forwarded-For: value[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Type: text/xml[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Length: 277[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Host: localdev.stanfordhealthcare.org:8443[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "User-Agent: Apache-HttpClient/4.5.11 (Java/12.0.2)[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Accept-Encoding: gzip,deflate[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "[\r][\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "<DeferredDocumentImpl><?xml version="1.0" encoding="UTF-16"?><myroot>[\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> " <notification>[\n]"
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> " <type>3</type>[\n]"
/////
22:17:02.879 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "</myroot></DeferredDocumentImpl>"
22:17:08.324 [poolScheduler1] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Closing expired connections
Код сервера: Это рабочий производственный устаревший код, который обрабатывает xml полезная нагрузка должным образом. Так что я не думаю, что здесь есть проблема, поскольку он обрабатывает такую же xml полезную нагрузку от других клиентов.
@SuppressWarnings("unchecked")
public static <T> T parseRequestObject(Class<T> pojoClass, HttpServletRequest request) {
T pojoObject = null;
String xml = IOUtils.toString(request.getReader());
...
}
Так что здесь, когда я отлаживаю xml, я вижу xml полезную нагрузку, заключенную в " DeferredDocumentImpl "
"<DeferredDocumentImpl><?xml version="1.0" encoding="UTF-16"?><myroot> <..></DeferredDocumentImpl>"
В: Я не уверен, откуда этот« DeferredDocumentImpl »и почему, и как это исправить.