Как указывалось в комментарии к ответу Джона , я рекомендую использовать реализацию JAX-WS, такую как JAX-WS RI (которая включена в Java 6) или Apache CXF.
Я буду использовать RI JAX-WS, чтобы проиллюстрировать мой ответ, как он доступен из коробки, в командной строке (чтобы объяснить шаги), но я бы рекомендовал использовать IDE с хорошей поддержкой JAX-WSнапример, NetBeans (см. ресурсы в конце ответа).
1.Генерируйте артефакты JAX-WS из WSDL
Первый запуск wsimport
для генерации артефактов JAX-WS (проще говоря, классы, которые вам понадобятся для вызова веб-службы):
wsimport -d generated -extension -keep -p com.gatewayedi.ws -XadditionalHeaders https://testservices.gatewayedi.com/PayerList/payerlist.asmx?wsdl
Об опциях:
Извините, если часть словарного запаса загадочна, но, добро пожаловать в веб-службы SOAP:)
2.Реализация клиента
Вот простой клиент, показывающий, как вызвать одну из доступных операций с использованием сгенерированных классов:
import com.gatewayedi.ws.AuthSOAPHeader;
import com.gatewayedi.ws.PayerList;
import com.gatewayedi.ws.PayerListSoap;
public class Main {
public static void main(String[] args) {
new Main().callWebService();
}
private void callWebService() {
PayerList service = new PayerList();
PayerListSoap port = service.getPayerListSoap();
AuthSOAPHeader authSOAPHeader = new AuthSOAPHeader();
authSOAPHeader.setUser("test");
authSOAPHeader.setPassword("test");
String payerList = port.ping(authSOAPHeader);
System.out.println(payerList);
}
}
Ниже сгенерированный запрос:
<?xml version="1.0" standalone="no"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<AuthSOAPHeader xmlns="https://ws.gatewayedi.com/">
<User>test</User>
<Password>test</Password>
</AuthSOAPHeader>
</S:Header>
<S:Body>
<Ping xmlns="https://ws.gatewayedi.com/"/>
</S:Body>
</S:Envelope>
Не знаю, какие учетные данные вы должны передать.
Ресурсы
Вопросы, связанные с этим