Это кажется, что должно быть просто, но возможно я пропускаю что-то. Я просто хочу выполнить вызов SOAP в Java, предпочтительно с помощью только встроенные API. Я немного поражен, смотря javax.xml.soap на пакет в документации Java. Я попытался искать Google, но кажется, что все результаты с 2000-2002, и они все говорят о библиотеках, которыми можно пользоваться для вызовов SOAP (прежде чем библиотеки SOAP были встроены, я предполагаю).
Я не должен обрабатывать запрос SOAP; только сделайте тот. Этот сайт имеет пример, который довольно прост, но он не пользуется встроенными библиотеками Java SOAP. Как я сделал бы в основном то же самое с помощью базового Java?
// Create the parameters
Vector params = new Vector( );
params.addElement(
new Parameter("flightNumber", Integer.class, flightNumber, null));
params.addElement(
new Parameter("numSeats", Integer.class, numSeats, null));
params.addElement(
new Parameter("creditCardType", String.class, creditCardType, null));
params.addElement(
new Parameter("creditCardNumber", Long.class, creditCardNum, null));
// Create the Call object
Call call = new Call( );
call.setTargetObjectURI("urn:xmltoday-airline-tickets");
call.setMethodName("buyTickets");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setParams(params);
// Invoke
Response res = call.invoke(new URL("http://rpc.middleearth.com"), "");
// Deal with the response
SOAP многое изменилось с первых дней. Вы можете делать такие вещи, как то, что вы описываете, но не распространено.
Теперь более распространенная практика - использовать инструмент WSDL2JAVA для создания клиентского API из описания WSDL службы. Это даст вам хороший, чистый, API, чтобы позвонить.
Apache CXF - одно место, чтобы пойти на эту вещь.
Один Proviso - RPC / кодируется. Если вы имеете дело со старым сервисом, это может быть RPC / кодировано, и в этом случае ваша лучшая ставка Apache Axis 1.x. Все остальное убегало от RPC / кодировано.