Я ищу информацию о том, что происходит, когда клиент веб-службы, созданный с помощью добавления ссылки на службу в Visual Studio 2010, выполняет вызов веб-службы и возвращает результат.
Как создается конверт запроса мыла и что определяет формат?
Как создается конверт с мыльным ответом и от чего зависит формат?
Этот процесс всегда абстрагировался .net, и я никогда не изучал, как это делается, но у нас есть пользователь, использующий php и, похоже, имеющий проблему с конвертом ответа. Ниже я предоставлю образец мыльных конвертов для запроса и ответа из .net и php кода.
php запрос:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://some.junk.url.xxxx.com">
<SOAP-ENV:Body>
<ns1:wsActionRouter>
<ns1:i_UserId>XXXX</ns1:i_UserId>
<ns1:i_Password>******</ns1:i_Password>
<ns1:ActionType>CS</ns1:ActionType>
<ns1:XmlData>
blah blah blah
</ns1:XmlData>
</ns1:wsActionRouter>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
.NET запрос:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1"
xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" />
</s:Header>
<s:Body>
<wsActionRouter xmlns="http://some.junk.url.xxxx.com">
<i_UserId>XXXX</i_UserId>
<i_Password>******</i_Password>
<ActionType>CS</ActionType>
<XmlData>
blah blah blah
</XmlData>
</wsActionRouter>
</s:Body>
</s:Envelope>
php response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p287:wsActionRouterResponse xmlns:p287="http://some.junk.url.xxxx.com">
<p287:wsActionRouterReturn>
blah blah blah
</p287:wsActionRouterReturn>
</p287:wsActionRouterResponse>
</soapenv:Body>
</soapenv:Envelope>
.NET ответ:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header />
<soapenv:Body>
<wsActionRouterResponse xmlns="http://some.junk.url.xxxx.com">
<wsActionRouterReturn>
blah blah blah
</wsActionRouterReturn>
</wsActionRouterResponse>
</soapenv:Body>
</soapenv:Envelope>
Почему конверты разные?
php люди особенно жалуются на пространство имен p287 и говорят, что они не могут использовать результаты. Я предполагаю, что они анализируют конверт ответа и не учитывают пространство имен.