代码如下:谢谢指教
<?php//php.ini中打开下面3个dll//extension = php_soap.dll
//extension = php_curl.dll
//extension = php_openssl.dll
header("Content-Type: text/html; charset=utf-8");
$client = new SoapClient("http://offbaoffba.host027.wwwer.com.cn/AmazonASINInterface.asmx?wsdl");
//本行测试不可行 $client = new SoapClient(" http://192.168.1.178:808/chkwelepsw.asmx?WSDL/ChkWele?username=test3&psw=123");
//参数这样传递 先包装一下
$param = array('province'=>'北京','city'=>'北京市','district'=>'东城区','asin'=>'B003Q97O2E');
//调用必须用__soapCall
$p = $client->__soapCall('GetASIN',array('parameters' => $param))->getWeatherbyCityNameResult->string;
;
print_r($p->GetASINResult);  //这里先输出一下变量$p,看看是什么类型。
?>
<?php
//初始化SoapClient客户端
$client = new SoapClient("http://offbaoffba.host027.wwwer.com.cn/AmazonASINInterface.asmx?wsdl");$param["province"]="北京";
$param["city"]="北京市";
$param["district"]="东城区";
$param["asin"]="B003Q97O2E";
//必须这样调用才能获得结果,至于为什么必须这么调用,我也不知道……
$res=$client->__Call('GetASIN',array('paramters'=>$param));
print_r($res->GetASINResult->anyType);
?>

解决方案 »

  1.   

    参考http://topic.csdn.net/u/20101106/18/17cc9bef-a28e-4d14-9ee5-6c94587546dd.html
      

  2.   

    5555,调用没有返回数据,直接查询倒是可以的 (http://offbaoffba.host027.wwwer.com.cn/Default.aspx)
    上面仁兄说的着色,不会的啊
      

  3.   

    我就不喜欢用这劳什子soapclient,裸发送http soap请求代码虽然多点,不过保证成功,只要你按照格式发送
    http请求格式在这里:
    http://offbaoffba.host027.wwwer.com.cn/AmazonASINInterface.asmx?op=GetASIN
    <?php
    $p = '北京';
    $c = '北京市';
    $a = '东城区';
    $o = 'B003Q97O2E';
    $xml = <<<httpbody
    <?xml version="1.0" encoding="gbk"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <GetASIN xmlns="http://tempuri.org/">
          <province>{$p}</province>
          <city>{$c}</city>
          <district>{$a}</district>
          <asin>{$o}</asin>
        </GetASIN>
      </soap:Body>
    </soap:Envelope>
    httpbody;
    $conn = fsockopen("offbaoffba.host027.wwwer.com.cn",80,$errno,$errstr,1);
    if(!$conn) die($errstr)."<br/>";//加上连接是否有效判断,就不会一直刷了
    fwrite($conn,"POST /AmazonASINInterface.asmx HTTP/1.1 \r\n");//实际上就是将数据POST 到        
    fwrite($conn,"Host:offbaoffba.host027.wwwer.com.cn\r\n");
    fwrite($conn,"Connection:close\r\n");//这里加上会快一些。
    fwrite($conn,"Content-type:text/xml;charset=utf-8\r\n");
    fwrite($conn,"SOAPAction: \"http://tempuri.org/GetASIN\"\r\n");
    fwrite($conn,"Content-length:".strlen($xml)."\r\n\r\n");
    fwrite($conn,$xml);
    while(!feof($conn))
    {
        $content .= fgets($conn,128);
    }
    fclose($conn);
    preg_match('#<GetASINResult>(.*?)</GetASINResult>#',$content,$body);
    echo $body[1];
    /*结果:
    *-------------
    *可配送至北京北京市东城区。查看其它地址的送达时间如果您希望在明天(3月18日)收到商品,请即刻提交订单,并将送货方式选为快递送货上门-免配送费。 
    */
    ?>
      

  4.   

    忘了代码着色。
    <?php
    $p = '北京';
    $c = '北京市';
    $a = '东城区';
    $o = 'B003Q97O2E';
    $xml = <<<httpbody
    <?xml version="1.0" encoding="gbk"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
      <GetASIN xmlns="http://tempuri.org/">
      <province>{$p}</province>
      <city>{$c}</city>
      <district>{$a}</district>
      <asin>{$o}</asin>
      </GetASIN>
      </soap:Body>
    </soap:Envelope>
    httpbody;
    $conn = fsockopen("offbaoffba.host027.wwwer.com.cn",80,$errno,$errstr,1);
    if(!$conn) die($errstr)."<br/>";//加上连接是否有效判断,就不会一直刷了
    fwrite($conn,"POST /AmazonASINInterface.asmx HTTP/1.1 \r\n");//实际上就是将数据POST 到   
    fwrite($conn,"Host:offbaoffba.host027.wwwer.com.cn\r\n");
    fwrite($conn,"Connection:close\r\n");//这里加上会快一些。
    fwrite($conn,"Content-type:text/xml;charset=utf-8\r\n");
    fwrite($conn,"SOAPAction: \"http://tempuri.org/GetASIN\"\r\n");
    fwrite($conn,"Content-length:".strlen($xml)."\r\n\r\n");
    fwrite($conn,$xml);
    while(!feof($conn))
    {
      $content .= fgets($conn,128);
    }
    fclose($conn);
    preg_match('#<GetASINResult>(.*?)</GetASINResult>#',$content,$body);
    echo $body[1];
    /*结果:
    *-------------
    *可配送至北京北京市东城区。查看其它地址的送达时间如果您希望在明天(3月18日)收到商品,请即刻提交订单,并将送货方式选为快递送货上门-免配送费。  
    */
    ?>
      

  5.   

    SoapClient 成功的列子,注意是utf-8编码,结果是:
    string(392) "可配送至北京北京市东城区。查看其它地址的送达时间如果您希望在明天(3月18日)收到商品,请即刻提交订单,并将送货方式选为快递送货上门-免配送费。 " <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <?php
    //初始化SoapClient客户端
    $client = new SoapClient("http://offbaoffba.host027.wwwer.com.cn/AmazonASINInterface.asmx?wsdl");$param["province"]="北京";
    $param["city"]="北京市";
    $param["district"]="东城区";
    $param["asin"]="B003Q97O2E";
    //必须这样调用才能获得结果,至于为什么必须这么调用,我也不知道……
    $res= $client->GetASIN($param);
    var_dump($res->GetASINResult);?>
    </body>
    </html>