Как получить доступ к конечной точке URL-адреса веб-службы SOAP из Java?
Я какое-то время искал конкретный пример и ничего не понимаю. К сожалению, мой предпочтительный метод с использованием REST недоступен в этом сценарии, над которым я работаю, поэтому необходимо протестировать подход, основанный на SOAP.
Настройка, например, есть файл SOAP WSDL, расположенный в www.website.com/soap.wsdl
. И я пытаюсь отправлять и получать данные от конечной точки CreateData.
Когда я добавляю файл WSDL в программное обеспечение SoapUI для тестирования, генерируется следующий шаблон сообщения SOAP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tic="{redacted}">
<soapenv:Header/>
<soapenv:Body>
<tic:CreateData>
<tic:request>{"testKey":"testValue"}</tic:request>
</tic:CreateData>
</soapenv:Body>
</soapenv:Envelope>
(я добавил данные теста JSON)
Похоже, я не могу понять, как превратить этот запрос, который правильно работает в SoapUI, в работающий фрагмент тестового кода Java.
Когда я импортирую WSDL в мою IDE, он генерирует один файл Java, который выглядит следующим образом;
import javax.jws.WebService;
@WebService(serviceName = "{redacted}", portName = "{redacted}", endpointInterface = "{redacted}", targetNamespace = "{redacted}", wsdlLocation = "WEB-INF/wsdl/null/null.wsdl")
public class NewWebServiceFromWSDL {
public java.lang.String createData(java.lang.String request) {
//TODO implement this method
throw new UnsupportedOperationException("Not implemented yet.");
}
}
Естественно, теперь я понятия не имею, что делать дальше. Как мне создать конверт SOAP в Java? Я ожидал бы увидеть некоторые методы, сгенерированные для таких вещей, как setSOAPEnvelopeHeader (), setSOAPEnvelopeBody (), setSOAPEnvelopeVariableRequest () и т. Д. (Или аналогичные).
Затем, как только объект SOAP Envelope был создан (как бы это ни было сделано), как мне тогда фактически отправлять сообщение и обрабатывать ответ?
Чувство смущения ...