Я предоставляю услугу, используя WSDL. Когда я импортирую его в SOAPUI, запрос выглядит как
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gweb="http://a.b.c.d.e.f.fr/">
<soapenv:Header/>
<soapenv:Body>
<gweb:envoyer>
<demande>
<a>?</a>
<b>?</b>
<c>?</c>
<!--Optional:-->
<d>?</d>
<!--Optional:-->
<e>?</e>
</demande>
</gweb:envoyer>
</soapenv:Body>
</soapenv:Envelope>
Но когда он импортируется клиентом, запрос givin выглядит как
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:types="http://a.b.c.d.e.f.fr/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<types:envoyer>
<s01:demande xmlns:s01="http://a1.a.b.c.d.e.f.fr/" xmlns:s02="http://a2.a.b.c.d.e.f.fr/">
<a>?</a>
<b>?</b>
<c>?</c>
<d>?</d>
<e>?</e>
</s01:demande>
</types:envoyer>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Я не знаю, почему добавляется пространство имен к методу «demande». Это проблема, потому что это не работает. Если я удаляю пространство имен 'demande', все работает
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: unexpected element (uri:"http://a1.a.b.c.d.e.f.fr/", local:"demande"). Expected elements are <{}demande></faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Я думаю, что клиент использует Axis2, и проблема в этом, но я не знаю, как это исправить.