PHP SoapClient调用响应缺少部分答案

时间:2011-03-27 21:43:38

标签: php soap wsdl soap-client

我的下面脚本有问题。它只是不想回复任何回复。

剧本:

    <?php

    require_once('nusoap.php');
    $c = new soapclient('http://hidden.com/api/soap_affiliate.php?wsdl');

    $result = $c->__call('optionalInfo', array('client'=> 'hidden','add_code' => 'hidden','password'=> 'hidden' , 
'start_date' => '2011-03-15','end_date' => '2011-03-24' , 'program_id' => '000' , 'opt_info' => 'x' ));

    echo $result; 

    ?>

返回的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<item>
</item>

它应该从我的客户端返回一些细节,尽管它甚至没有显示空字段。

更多细节应该如下:

    <?xml version="1.0" encoding="utf-8"?>
<item> 
     <dailystats> 
         <date>2011-03-18</date> 
         <impressions>17</impressions> 
         <clicks>1</clicks> 
         <leads>1</leads> 
         <num_sales>0</num_sales> 
         <sales> 0.00</sales> 
         <sub_sales> 0.00</sub_sales>  
         <commission> 1.10</commission> 
         <click_thru_ratio>5.88%</click_thru_ratio> 
</dailystats> 
</item>

我尽我所能(因为我知道多少肥皂),但它不会返回任何其他东西。 那么有人可以帮我解决这个脚本吗?

所需的网络服务如下,

- <message name="optionalInfoRequest">
  <part name="client" type="xsd:string" /> 
  <part name="add_code" type="xsd:string" /> 
  <part name="password" type="xsd:string" /> 
  <part name="start_date" type="xsd:string" /> 
  <part name="end_date" type="xsd:string" /> 
  <part name="program_id" type="xsd:int" /> 
  <part name="opt_info" type="xsd:string" /> 
  </message>
- <message name="optionalInfoResponse">
  <part name="return" type="xsd:string" /> 
  </message>

可以在WSDL service

找到整个WSDL

修改

谢谢wrikken,它把我推向了正确的方向。我已经编辑了一下脚本:现在有一个“opt_info”标签。在这里,我必须放置电子邮件地址和日期,以便它也返回它们。有人可以帮我这么做吗?

1 个答案:

答案 0 :(得分:0)

你需要使用nusoap吗? PHP现在拥有自己的SOAP处理,这更易于理解(至少对于我作为传统的PHP程序员,我发现nusoap有点令人困惑)。如果您刚开始学习SOAP并且您有一个本机支持它的PHP版本,使用--enable libxml(可能需要使用soap支持重新编译),学习PHP的方法可能是个好主意。

以下是发送请求且 接收响应的示例客户端脚本,它还会在“var dump”中打印出错误:

        <?php
        try {
            $sClient = new SoapClient("http://URL-TO-WSDL");
            $response = $sClient->doFunctionName($REQUEST);
//doFunctionName should represent the name of the "message" element
//and $REQUEST is what you are sending to the server for that same message element
            print_r($response);
        } catch(SoapFault $error) {
            var_dump($error);
        } ?>

希望这很有用。顺便说一句:你可以使用phpinfo()查看你的php是否有肥皂支持;搜索“soap”它应该读取--enable-soap