❶ php soap擴展做webservice的時候 如何傳入數組或者對象參數
SOAP可以傳遞數組和對象,比較復雜不便詳述。你可以在網上查閱SOAP的規范。SOAP的對象需要定義在wsdl里。這就要求java調用方也定義這些對象。
使用SOAP要注意一個問題:SOAP沒有統一的標准,不同語言對SOAP的實現有微小差別,有可能導致不兼容。
編寫SOAP的wsdl是件麻煩而且痛苦的事。你可以試試使用第三方庫。Yii框架就提供一個強大的SOAP解決方案。你可以通過注釋和類,自動生成wsdl。個人不推薦在PHP中使用SOAP,因為PHP不像其他語言類似JAVA、.NET,提供強大的SOAP支持。
你可以考慮輕量級API,也可以考慮XML-RPC。並不比SOAP差,而且很靈活。
望採納,謝謝!
❷ php 做的web services 中的wsdl描述文件,我想定義某方法的參數數據類型為數組怎麼定義
下面這樣:
<part name="t_c" type="xsd:int[]" />
<part name="t_c" type="xsd:string[]" />
❸ php 中 webservice 是如何使用的 調用別人的介面 參數是如何傳遞的
php調用web service還是非常簡單的。下面用一個例子說明:
web service服務是查詢QQ用戶是否在線
使用php5開發客戶端:
<?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_mp($client->__getFunctions());
print("");
var_mp($client->__getTypes());
print("");
class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);
$arrResult = $client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);
echo $arrResult->qqCheckOnlineResult . "";
} catch (SOAPFault $e) {
print $e;
}
?>
代碼確實很簡單吧,創建SoapClient對象時,可以使用保存在本地WSDL文件,也可以使用遠程的地址,後面的array數組里可以帶上很多的參數,具體參數可以查php的SoapClient幫助,這里帶的是字元集編碼,如果調用方法的參數里有中文,一定要指定字元集編碼,否則會出錯。
調
用web service前可以先調用SoapClient的__geunctions()和__getTypes()方法看一下你要調用的
web service暴露的方法,參數和數據類型,需要注意的是傳入的參數名一定要和soapclient裡面定義的一致,否則參數是傳不過去的。
需要使用SoapClient的__soapCall()或__call()方法,具體使用方法可以查php的幫助文檔。如果參數要求是一個結構體,請用類代替,如上面的代碼。
另外發現個問題,如果web service方法返回的是xml格式的字元串,php接收到以後會自己把數據內容解析出來,而不是xml字元串.
❹ php生成WEBSERVICE。wsdl 不能傳遞參數
看看編碼是否正確,也可以通過一些網路抓包工具來看看,轉輸的數據是不是格式正確等
❺ php調用sap和.net的webservices介面
php連接sapwebservices介面
public function getwebservice($param){
$user = 'username';
$password = 'password';
$wsdl = '*****'; /*wsdl地址*/
$SOAP_CONFIG = array(
'login' => $user,
'password' => $password,
'trace' =>true,
'soap_version'=>SOAP_1_2,
'connection_timeout' => 50,
'encoding' => 'UTF-8',
'cache_wsdl' => WSDL_CACHE_NONE,
'keep_alive' => false
);
try {
$client = new \SoapClient($wsdl, $SOAP_CONFIG); //調用sap里的介面
/* $param= array(
'參數1' => '1',
'參數2' => '2',
'參數3' => '3',
'參數4' => '4');*/
$ve=$client->__call("ZSdSoInfo", array($param));
return $ve;
} catch (Exception $e) {
print $e->getMessage();
}
}
php鏈接.net介面
$ws = "http://*****?wsdl";//webservice服務的地址
$client = new SoapClient ($ws);
$result=$client->kelOtp(array('參數1'=>參數1,'參數2'=>參數2);
$a= $result->kelOtpResult;/
❻ 怎麼根據一段wsdl代碼找出具體方法以及參數
可以引出為」可執行jar「(項目必須有mian方法),然後雙擊運行即可。
第一步:在項目上右擊,選擇」Export「,之後找到」Runnable Jar file「。
第二步:在」首橘Launch「下拉選中選擇」main「方法入口類,然後選擇」Browse「後,輸入」jar「名稱,點擊」Finsh「脊祥即可完成可運行jar制櫻芹搏作。
❼ PHP 怎樣獲取,wsdl的數據,有客戶端
建立一個包含兩個operations(int Adder(int,int))的Web服務
<?php
//server.php
require("nusoap/lib/nusoap.php"); //導入nusoap.php
$server=new soap_server(); //聲明一個soap_server對象
$server->configureWSDL('HelloWorld','urn:HelloWorld'); // 配置WSDL
$server->wsdl->schemaTargetNamespace='urn:HelloWorld'; //定碰薯灶義目標命名空間
$server->register("Adder", //注冊Adder
array('format'=>'xsd:int','fuck'=>'xsd:int'), //參數類型
array('return'手升=>'xsd:int'), //返回笑扮值類型
'urn:HelloWorld',
'urn:HelloWorld#Adder');
function Adder($a,$b)
{
return ($a+$b);
}
$HTTP_RAW_POST_DATA=isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA:'';
$server->service($HTTP_RAW_POST_DATA);
?>
訪問http://localhost/server.php?wsdl即可得該服務的WSDL文檔
❽ php怎麼生成wsdl文件
辦法有兩種:
1.zend studio生成
對於zend studio 9之前的版本貌似直接生成:
File ->New -> Other-> Webservice-> WSDL
對於zend studio 9需要安裝wsdl插件:
1、打開zendstudio9,選擇help(幫助)->welcome
2、在右邊的列表中找到WSDL Support,勾選
3、點擊Apply changes(應用修改)
4、zde會自動安裝,然後提示要重啟,點擊restart now(現在重新啟動)
wsdl支持安裝完畢,下面我們來生成一個wsdl文件,步驟如下:
1、選擇保存wsdl的項目文件夾
2、右鍵-new(新建)->other(其他)
3、在彈出的對話框中選擇web services,在下級菜單中選擇WSDL file,點擊next進入下一步
4、命名你的wsdl文件,點擊next進入下一步
5、修改target namespace(目標名稱空間),其他不變,點擊finish。
2.利用SoapDiscovery.class.php生成
❾ php怎麼讀取wsdl文檔
正常情況只要
$client = new SoapClient('wsdl的url');
$Cardholder = $client->retrieveCardholder($a0,$a1,$a2);
就可以了
這種問題屬於嚴重"環境相關",你那擁有測試環境比沒有環境的其他人更有優勢的
如果搞不定,也盡量把出錯信息、代碼等原始環境告訴其他人。 切忌自己解釋概括
既然語法層面和使用層面都解決不了,你的問題屬於「調試層面」,
請給出url和測試帳戶,別人替你調試吧。
❿ 如何實現php wsdl webservice 讓我的客戶端訪問
首先我創建的文件有:
api.php api的介面類文件
api.wsdl 我創建產生的最後要調用的介面文件
cometrue.php 注冊service api類內容的所有內容的執行文件
creat_wsdl.php 創建wsdl文件的執行方法文件
SoapDiscovery.class.php 必須要調用的soap類文件(可在網上查詢喊薯螞下載)
第一步 :創建一個service的文件夾專門存放您的api介面項目
第二步:下載SoapDiscovery.class.php類文件,放在您的service文件夾裡面
第三步:在手改service文件夾下面創建鄭埋您自己api介面類文件api.php,