A. php webservice是什麼
一言以蔽之:WebService是一種跨編程語言和跨操作系統平台的遠程調用技術。
所謂跨編程語言和跨操作平台,就是說服務端程序採用java編寫,客戶端程序則可以採用其他編程語言編寫,反之亦然!跨操作系統平台則是指服務端程序和客戶端程序可以在不同的操作系統上運行。
所謂遠程調用,就是一台計算機a上的一個程序可以調用到另外一台計算機b上的一個對象的方法,譬如,銀聯提供給商場的pos刷卡系統,商場的POS機轉賬調用的轉賬方法的代碼其實是跑在銀行伺服器上。再比如,amazon,天氣預報系統,淘寶網,校內網,網路等把自己的系統服務以webservice服務的形式暴露出來,讓第三方網站和程序可以調用這些服務功能,這樣擴展了自己系統的市場佔有率,往大的概念上吹,就是所謂的SOA應用。
其實可以從多個角度來理解WebService,從表面上看,WebService就是一個應用程序向外界暴露出一個能通過Web進行調用的API,也就是說能用編程的方法通過Web來調用這個應用程序。我們把調用這個WebService的應用程序叫做客戶端,而把提供這個WebService的應用程序叫做服務端。從深層次看,WebService是建立可互操作的分布式應用程序的新平台,是一個平台,是一套標准。它定義了應用程序如何在Web上實現互操作性,你可以用任何你喜歡的語言,在任何你喜歡的平台上寫Web service ,只要我們可以通過Web service標准對這些服務進行查詢和訪問。
WebService平台需要一套協議來實現分布式應用程序的創建。任何平台都有它的數據表示方法和類型系統。要實現互操作性,WebService平台必須提供一套標準的類型系統,用於溝通不同平台、編程語言和組件模型中的不同類型系統。Web service平台必須提供一種標准來描述Web service,讓客戶可以得到足夠的信息來調用這個Web service。最後,我們還必須有一種方法來對這個Web service進行遠程調用,這種方法實際是一種遠程過程調用協議(RPC)。為了達到互操作性,這種RPC協議還必須與平台和編程語言無關。
至於php嘛, 就是一門動態的腳本語言, 無需和webservice畫上勾
B. php調用webservice,nusoap出錯
改成$client = new soapclient('http://localhost/nusoap/nusoap_server1.php?WSDL');
C. Php調用手機發簡訊功能
移動的介面是什麼風格的?是soap的還是自定義的?
調用自定義介面通常有以下步驟:
1、閱讀介面文檔
2、數據介面一般會提供一些參數。如果是GET介面,請將參數拼接在地址的後面(推薦使用
http_build_query)。如果是POST介面,看我的示例代碼。
3、請求數據
4、解析返回的內容,判斷調用是否成功。一般返回的內容有xml和json格式。
給你一個CURL調用POST介面的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$ch = curl_init('省略介面地址, 防止屏蔽');
// 以下選項設為true,否則介面返回的內容會直接列印在頁面上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 連接超時,一定要設置
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// 連接成功後,請求超時,一定要設置
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
// 使用POST請求
curl_setopt($ch, CURLOPT_POST, 1);
// 將參數POST過去, $post_data是你的參數組成的關聯數組
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
// 提交請求,得到反饋
$response = curl_exec($ch);
// 解析反饋的內容,略
如果是SOAP風格的,請查閱PHP文檔SoapClient類的用法。因為Soap規范不統一,使用其他語言實現的Soap可能和PHP不兼容。
以前我使用過移動夢網的介面(不是移動的介面),它提供兩種風格的API。它的Soap就和PHP不兼容。所以我選擇了自定義風格的API。
追問:
是webservice介面,有範例嗎?
追答:
這個介面是soap的,人家已經幫你把邏輯封裝了。
注意這個地址http://211.140.20.45:9080/openmasservice?wsdl是否正確。我這里是訪問不到的。我覺得你使用他文檔中的實例肯定不會有問題。
追問:
這個我替換成 開放給我的介面 卻還是不行啊!!!
追答:
你要說說是怎麼個不行啊。。是沒響應(空白),還是返回內容有問題,還是報錯?
把出錯信息貼上
追問:
沒響應 返回空白,因為代碼多這里不夠貼。
追答:
我試了一下,刷出一堆錯誤來。它用的是一個叫nusoap的類。
你嘗試一下PHP內置的SoapClient吧,可以代替它的nusoap。