Веб-сервис .Net возвращает значение NULL, когда мыло использует веб-сервис Php. - PullRequest
2 голосов
/ 01 марта 2012

Я использую «Добавить сервисную ссылку» в .net, чтобы использовать php soap web servcie. Однако, это всегда возвращает нуль. Я прикрепил код c # и пакеты, пойманные Fiddler ниже.

Я создал реализацию IClientMessageInspector, которая записывает ответ в файл журнала в методе AfterReceiveReply, это довольно хорошо. Кто-нибудь может знать, что не так внутри и как это исправить? Спасибо!

С уважением, Рон

код C # для вызова веб-службы:

var service = new ServiceReference1.APIServicePortTypeClient();
var reponse = service.manageSubscription(@"<?xml version='1.0' standalone='yes'?>
    <customer name=""TEST group"" version=""1.0.0"">
        <instance name=""TEST"" fullname=""Just for test"" source=""Test"">
            <lists>
                <list name=""api_send_mail"" type=""subscribe"" />
            </lists>
            <data>
                <email>ron@abcd.com</email>
            </data>
        </instance>
    </customer>");
Assert.IsNotNull(reponse); // exception happens here...

А вот пакет, перехваченный fiddler:

Запрос:

POST http://someurl.php HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:xmethods-delayed-quotes#manageSubscription"
Host: inxau.de
Content-Length: 905
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><APIToken xmlns="http://schemas.xmlsoap.org/ws/2002/07/utility">12345678</APIToken></s:Header><s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><q1:manageSubscription xmlns:q1="urn:xmethods-delayed-quotes"><xml xsi:type="xsd:string">&lt;?xml version='1.0' standalone='yes'?&gt;&#xD;
&lt;customer name="Test group" version="1.0.0"&gt;&#xD;
    &lt;instance name="TEST" fullname="Just for test" source="Test"&gt;&#xD;
        &lt;lists&gt;&#xD;
            &lt;list name="api_send_mail" type="subscribe" /&gt;&#xD;
        &lt;/lists&gt;&#xD;
        &lt;data&gt;&#xD;
            &lt;email&gt;ron@abcd.com&lt;/email&gt;&#xD;
        &lt;/data&gt;&#xD;
    &lt;/instance&gt;&#xD;
&lt;/customer&gt;</xml></q1:manageSubscription></s:Body></s:Envelope>

Ответ:

HTTP/1.1 200 OK
Date: Thu, 01 Mar 2012 00:03:40 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.3.8
Content-Length: 761
MS-Author-Via: DAV
Connection: close
Content-Type: text/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="inxau.de" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:manageSubscriptionResponse><return xsi:type="xsd:string">&lt;?xml version="1.0"  encoding="UTF-8"?&gt;
&lt;result&gt;
    &lt;instance name="TEST group" value="1" process_id="1001"&gt;
        &lt;data&gt;
            &lt;email&gt;ron@abcd.com&lt;/email&gt;
        &lt;/data&gt;
    &lt;/instance&gt;
&lt;/result&gt;

...