У меня есть SOAP WebService, который вызывается внешним клиентом вне моей досягаемости. Когда этот клиент вызывает мой веб-сервис, никакие параметры не передаются моему вызову метода, даже если метод вызывается.
Я сузил это до того, как форматируется запрос.
Это мой веб-сервис (сокращенно):
@WebService(targetNamespace = "urn:customer:their.API")
public class WebService{
@WebMethod(operationName = "Request")
@WebResult(name = "Result", targetNamespace = "urn:customer:their.API")
public Result Request(@WebParam(name = "Action") String action) {
}
}
Я отправляю запрос и следующие работы, параметры в порядке:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:customer:their.API">
<soapenv:Header/>
<soapenv:Body>
<urn:Request>
<Action>DoSomething</Action>
</urn:Request>
</soapenv:Body>
</soapenv:Envelope>
Это не работает, «Действие» не передано:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<Request xmlns="urn:customer:their.API">
<Action>?</Action>
</Request>
</soapenv:Body>
</soapenv:Envelope>
Проблема в том, что я не могу изменить запрос, потому что он поступает от какого-то другого программное обеспечение, к которому у меня нет доступа.
Это выполняется на Glassfish5 в виде простого файла WAR
Любые идеи?