PHP SOAP空响应

时间:2016-04-20 12:42:25

标签: php soap

我正在尝试使用soapui访问soap接口。一切正常:

请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soc="www.example.com">
   <soapenv:Header/>
   <soapenv:Body>
      <soc:getMailboxes>
         <userId>512</userId>
      </soc:getMailboxes>
   </soapenv:Body>
</soapenv:Envelope>

响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <getMailboxesResponse xmlns="http://www.example.com">
         <getMailboxesReturn>
            <mailboxes>
               <mailboxes>
                  <administratorNumbers/>
                  <administratorUsers>
                     <administratorUsers>512</administratorUsers>
                  </administratorUsers>
                  <allowsSuppressedNumbers>true</allowsSuppressedNumbers>
                  <deactivatedByAdmin>false</deactivatedByAdmin>
                  <deactivatedByUser>false</deactivatedByUser>
                  <mailNotificationActive>true</mailNotificationActive>
                  <name>speech box</name>
                  <notificationNumber xsi:nil="true"/>
                  <number>123123123</number>
                  <pin xsi:nil="true"/>
                  <recordConferenceCallActive>false</recordConferenceCallActive>
                  <sendSmsCount>0</sendSmsCount>
                  <sendSmsLimit>0</sendSmsLimit>
                  <smsNotificationActive>false</smsNotificationActive>
                  <tag xsi:nil="true"/>
                  <type>CLASSIC</type>
                  <voicemailEnabled>false</voicemailEnabled>
                  <whitelistedNumbers/>
               </mailboxes>
            </mailboxes>
            <responseCode>
               <ID>0</ID>
               <name>OK</name>
            </responseCode>
         </getMailboxesReturn>
      </getMailboxesResponse>
   </soapenv:Body>
</soapenv:Envelope>

我尝试使用此代码来获得相同的结果:

$client = new SoapClient($soapURL,array('login'          => "...",
                                            'password'       => "...",
                                            'trace'                  => 1,
                                            'features' => SOAP_SINGLE_ELEMENT_ARRAYS));

            $response = $client->getMailboxes(512);
            echo var_dump(get_object_vars($response));

我得到了这个结果:

array(2) {
  ["mailboxes"]=>
  object(stdClass)#4 (0) {
  }
  ["responseCode"]=>
  object(stdClass)#5 (2) {
    ["ID"]=>
    int(0)
    ["name"]=>
    string(2) "OK"
  }
}

我认为像soapui响应中的某些值的响应(如object(stdClass)#5)?如果我发送错误的用户ID,我会收到正确的错误消息。任何人都可以帮助我吗?

更新1: getMailboxes方法创建此代码:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.com">
    <SOAP-ENV:Body>
        <ns1:getMailboxes>
            <userId>512</userId>
        </ns1:getMailboxes>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

更新2:

如果我使用此代码:

$response = $client->getMailboxes(["userId"=>512]);

我得到这个肥皂代码。 userId应为512,而不是1。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="www.example.com">
<SOAP-ENV:Body>
    <ns1:getMailboxes>
        <userId>1</userId>
    </ns1:getMailboxes>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

我得到了肥皂代码:

echo "REQUEST:\n" . $client->__getLastRequest()

1 个答案:

答案 0 :(得分:0)

此调用不正确:

$response = $client->getMailboxes(512);

请注意,在原始XML中,您告诉它512意味着什么? PHP也是如此,你必须使用关联数组来识别你发送的参数:

$response = $client->getMailboxes(["userId"=>"512"]);
相关问题