Веб-сервис возвращает полный, правильный ответ, но источник ответа пуст - PullRequest
3 голосов
/ 04 мая 2010

Я использую диспетчерский клиент для доступа к веб-сервису. Все мои параметры верны, ошибок нет, и, изучая ответ с помощью Wireshark, я определенно вижу, что правильный ответ получен на сетевом уровне. Но на уровне приложения Java мой источник ответа пуст.

public void testDispatch(QName serviceName, QName portName, String endpointAddress, String action) throws Exception {

    Service service = Service.create(serviceName);
    service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);

    String requestXml = buildRequestXml();

    Dispatch<Source> dispatch = service.createDispatch(portName, Source.class, Service.Mode.MESSAGE);
    dispatch.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, action);

    Source request = new StreamSource(new StringReader(requestXml));
    Source response = dispatch.invoke(request);

    Transformer copier = TransformerFactory.newInstance().newTransformer();
    copier.transform(response, new StreamResult(System.out)); 

}

Я пытался преобразовать в DOMResult, то же самое, пустой корневой узел. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 июля 2012

Мое рабочее решение проблемы:

StreamResult xmlOutput = new StreamResult(new StringWriter());
Transformer copier = TransformerFactory.newInstance().newTransformer();
copier.transform(responseStream, xmlOutput);
System.out.println(xmlOutput.getWriter().toString());
0 голосов
/ 25 февраля 2011

Я бы вызвал службу с API-интерфейсом Proxy, а затем сравнил сообщения Soap.

Могут быть различия в пространствах имен, которые мешают JAXB правильно демаршировать.

...