用C#创建了一个WebService, 然后在PHP里访问这个Service, 当测试不带参数时,结果正常。当调用带参数的方法时,结果返回都是空。[PHP Code]
$url ="http://www.ws.cn/1/Healthgrow/Service.asmx?wsdl";
$client = new SoapClient($url,array("trace" => 1, "exception" => 0)); 
$result = $client->UserLogin(array('userName' => '3','password' => '222'));
echo "<pre>".print_r($result->UserLoginResult,true)."</pre>";
[/PHP Code]当我换成调用第三方提供的公用Service时:[PHP Code]
$client = new SoapClient("http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl");
$result = $client->qqCheckOnline(array('qqCode' => '123456'));//**替换QQ号
echo    $result->qqCheckOnlineResult;
[/PHP Code]
同样的代码又是可以正常返回结果的。是怎么回事啊?

解决方案 »

  1.   

    http://www.ws.cn/1/Healthgrow/Service.asmx?wsdl
    ==================
    你这wsdl地址访问不了
    你看qq的请求格式也差不多会弄了
    看soapBody里的请求格式
      <qqCheckOnline xmlns="http://WebXml.com.cn/">
          <qqCode>string</qqCode>
        </qqCheckOnline>
    在对比你正确的soapClient请求方式
    $result = $client->qqCheckOnline(array('qqCode' => '123456'));
    一目了然。
    qq的请求示例看这里
    http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline
      

  2.   

    http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline
      

  3.   

    我的中www.ws.cn 这个域名对应的IP没有开放,只限局域网访问,所以你访问不到,我这里是正常的。因为我用不带参数调用,返回是正确的结果,带了参数返回结果就为空了。
      

  4.   

    应该是qqCode得格式给转成了int,看看日志啊