есть ли Java API для перехвата SOAP-запросов и ответов? - PullRequest
0 голосов
/ 03 июля 2011

Я могу использовать клиентские классы веб-службы для получения результата, но вместо текстового результата я хочу завершить SOAP-сообщение в моей программе JavaSE.Как я могу это сделать?Любая идея?

Ответы [ 2 ]

2 голосов
/ 03 июля 2011

Да, есть.
Используйте Dispatch<Source> для работы с SOAP-сообщением JAX-WS Dispatch .
Пример
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Даже не пытался скомпилировать код:

    //xmlString has the xml message to send to the web service  
    StreamSource xmlMsg = new StreamSource(new StringReader(xmlString));   
    //Create URL of web service. Place your URL for WSDL
    URL wsdlURL = new URL("http://10.5.2.10:8080/path/service?wsdl");  
    QName serviceName = new QName("http://example.com",  "TrivialWebService");  
    Service s = Service.create(wsdlURL, serviceName);  
    QName portName = new QName("http://example.com", "TrivialWebServicePort");  
    //Service.Mode.MESSAGE works on SOAP msg (as opposed to Service.Mode.PAYLOAD)
    Dispatch<Source> dispatch = createDispatch(portName,  
                                                      Source.class,  
                                                      Service.Mode.MESSAGE);  
    //Send request
    Source reply = dispatch.invoke(xmlMsg);  
    DOMResult domResponse = new DOMResult();
    Transformer trans = TransformerFactory.newInstance().newTransformer();
    trans.transform(reply, domResponse); 
    //Now use DOM APIs

Вы также можете указать, хотите ли вы работать с полезной нагрузкой HTTP (в виде XML), т.е. с конвертом SOAP или с полезной нагрузкой SOAP, т.е. с ответом.
Вам потребуется написать код для обработки необработанного XML (например, использовать DOM).
Вы можете использовать этот API, если вы используете JAX-WS или CXF.
Для AXIS2 можно работать и с XML. Просто будет какой-то конкретный apis
Конечно, есть также SAAJ, который вы можете использовать.

0 голосов
/ 03 июля 2011

Все сообщение SOAP будет содержаться в объекте HTTP-запроса (HttpServletRequest).Это даст вам заголовки, тело и все остальное.

...