Пример клиентского запроса SOAP

#java #android #web-services #web-applications

#java #Android #веб-сервисы #веб-приложения

Вопрос:

У меня есть веб-служба HelloWorld, развернутая на сервере. Теперь я пытаюсь связаться с сервером. Как мне выполнить запрос SOAP из Java-приложения?

Вот XML-конверт (запрос):

             POST /AndroidSampleApp/Test.asmx HTTP/1.1
            Host: (host)
            Content-Type: text/xml; charset=utf-8
            Content-Length: length
            SOAPAction: "http://tempuri.org/HelloWorld"

            <?xml version="1.0" encoding="utf-8"?>
            <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
              <soap:Body>
                <HelloWorld xmlns="http://tempuri.org/">
                  <username>string</username>
                  <password>string</password>
                </HelloWorld>
              </soap:Body>
            </soap:Envelope>
 

Вот XML-конверт (запрос):

             HTTP/1.1 200 OK
            Content-Type: text/xml; charset=utf-8
            Content-Length: length

            <?xml version="1.0" encoding="utf-8"?>
            <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
              <soap:Body>
                <HelloWorldResponse xmlns="http://tempuri.org/">
                  <HelloWorldResult>string</HelloWorldResult>
                </HelloWorldResponse>
              </soap:Body>
            </soap:Envelope>
 

Как мне вызвать этот веб-сервис из Java-программы и какие пакеты мне нужно импортировать. Спасибо!

Примечание: Это для приложения для Android

Ответ №1:

Вы можете использовать библиотеку ksoap2, чтобы легко выполнять вызовы веб-сервиса soap.

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

Вместо этого я использую HttpURLConnection (или AndroidHttpClient, в зависимости от версии ОС). Смотрите Этот пост для получения дополнительной информации. Я использую их в сочетании с любым из анализаторов и сборщиков XML, доступных на Android.

Надеюсь, это поможет!

Ответ №2:

Если вы хотите вызвать его на Java, то один из способов сделать это — заставить SoapUI сгенерировать для вас клиентский jar.

http://2mohitarora.blogspot.com/2010/11/how-to-generate-web-service-client-jar.html

Если вы используете Apache cxf, вы можете посмотреть в этой статье, как создать клиента:

http://logicsector.wordpress.com/2008/10/19/how-to-create-a-wsdl-first-soap-client-in-java-with-cxf-and-maven/