本文目錄一覽:
- 1、php soap擴展做webservice的時候 如何傳入數組或者對象參數?
- 2、php數組問題
- 3、php 中 webservice 是如何使用的 調用別人的介面 參數是如何傳遞的
- 4、php怎樣接收整個json數組
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數組問題
資料庫里輸出了n條數據,把n條數據和起來,用逗號分隔
這個問題可以用expolde函數解決
怎樣才能讓$temp輸出 1,2,3,4,5…..這樣的格式?
如果$temp數組裡沒有1,2,3,……的數值,可以用傻辦法:
for($i=1;$i=count($temp);$i++){
$temp[$i][‘sn’]=$i;
}
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_dump($client-__getFunctions());
print(“”);
var_dump($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怎樣接收整個json數組
PHP接收JSON格式的數據
在API服務中,目前流行採用json形式來交互。
給前端調用的介面輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微複雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS[‘HTTP_RAW_POST_DATA’] 或 file_get_contents(‘php://input’) 來獲取提交的數據
查看手冊,可以發現$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變數組成的數組,是自動全局變數。
$GLOBALS[‘HTTP_RAW_POST_DATA’] :總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 數據。此變數僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype=”multipart/form-data” 表單數據不可用。也就是說基本上$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS[‘HTTP_RAW_POST_DATA’]來接收,比如 text/xml 或者 soap 等等。
補充說明:PHP默認識別的數據類型是application/x-標準的數據類型。
原創文章,作者:YVBL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138919.html