php 調用.net的webservice 需要注意的


首先

SoapClient類
這個類用來使用Web services。SoapClient類可以作為給定Web services的客戶端。
它有兩種操作形式:
* WSDL 模式
* Non-WSDL 模式
在WSDL模式中,構造器可以使用WSDL文件名作為參數,並從WSDL中提取服務所使用的信息。
non-WSDL模式中使用參數來傳遞要使用的信息。這個類有許多可以用來使用服務的有用的方法。其中SoapClient::__soapCall()是最重要的。這個方法可以用來調用服務中的某個操作。

 

 

<?php
/** 
* Client端 
*/ 
$ws = " http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
$client = new soapclient($ws,array ('trace'=>0,'uri'=>' http://WebXml.com.cn/'));
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
/** 
* 使用$client->__getFunctions();
*可以得到webservice提供的方法

*下面調用的即是其中一個

*這個方法是用來獲得某省的城市的

*具體的說明可以在瀏覽器中輸入

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl查看
**/

$client->getSupportCity("福建");//這個方法要求的參數是string型或為空
?>

錯誤信息如下:

Fatal error: Uncaught SoapFault exception: [soap:Server] 服務器無法處理請求。 ---> 未將對象引用設置到對象的實例。 in D:\EclipseDocument\weather\Client.php:23 Stack trace: #0 [internal function]: SoapClient->__call('getSupportCity', Array) #1 D:\EclipseDocument\weather\Client.php(23): SoapClient->getSupportCity('??????') #2 {main} thrown in D:\EclipseDocument\weather\Client.php on line 23

試用

$client->__call('getSupportCity', '福建');

一樣出錯

webmethod 說明:

- <wsdl:types>

- <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">

- <s:element name="getSupportCity">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="byProvinceName" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

 

是什么原因導致的呢?

該怎么解決?

回答:

.net 對php調用其webservice 有一個規則

代碼如下

$param["arg1"]="value1";

$client->__Call('WebMethodName',array($param));

鍵名 agr1 是方法 WebMethodName 的參數名,不能變

__call()函數

第一個參數是要調用的方法

第二個參數是二維數組

 

 

示例二、

web融合業務調用電信的服務器方法http://219.143.33.58/WebConsumeTest/WebConsume.asmx

try{
        
        $client = new SoapClient("http://219.143.33.58/WebConsumeTest/WebConsume.asmx?wsdl");
        //$addResult = $client->__getFunctions();
        //$timeResult = $client->webConsumeReq(array('SPID'=>"35101282",'productID'=>"135000000000000229025",'address'=>"13386530106",'content'=>"abc123"));
        //$addResult = $client->add(1,6);
        $addResult = $client->__call('webConsumeReq',array(array('SPID'=>"35101282",'productID'=>"135000000000000229025",'address'=>"13386530106",'content'=>"abc123")));
        //$addResult = $client->__soapCall('webConsumeReq',array('SPID'=>"35101282",'productID'=>"135000000000000229025",'address'=>"13386530106",'content'=>"abc123"));
        var_dump( $addResult);    
         
    }catch(Exception $e){
        printf("Message=%s \n",$e->__toString());
    }

 

調用成功。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM