2010-05-04 3 views
3

Я использую клиента отправки для доступа к веб-службе. Все мои параметры верны, ошибок нет и, исследуя ответ с 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, то же самое, пустой корневой узел. Любые идеи?

ответ

0

Я бы вызвал сервис с помощью Proxy API, а затем сравнил сообщения Soap.

Возможно, существует разница в пространствах имен, которые не позволяют JAXB надлежащим образом не сортировать.

0

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

StreamResult xmlOutput = new StreamResult(new StringWriter()); 
Transformer copier = TransformerFactory.newInstance().newTransformer(); 
copier.transform(responseStream, xmlOutput); 
System.out.println(xmlOutput.getWriter().toString()); 
Смежные вопросы