作者 主題: [心得]在php中使用Web Service  (閱讀 11665 次)

0 會員 與 1 訪客 正在閱讀本文。

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
[心得]在php中使用Web Service
« 於: 2004-12-01 14:19 »
目前網頁服務當紅的主角莫過於Web service服務
透過標準的SOAP/WSDL(W3C已經將SOAP,WSDL列入XML標準的規範)
達到不同平台之間資訊的交換
以往大多只侷限於微軟的.Net產品上
不過現在PHP的愛好者也有解決方案了
首先到http://pear.php.net/上下載
SOAP套件
SOAP套件需要用到
Mail_Mime
HTTP_Request
Net_URL
Net_DIME
這幾個PEAR的模組沒有裝的人請順便裝一下吧
抓回來後只要執行pear install [套件]就可以完成安裝了
好啦現在我們就開始主題了
底下的範例程式是以google提供的google search service作為例子

search.php
代碼: [選擇]

<form name="form1" method="post" action="">
 請輸入查詢字串:<input name="Query" type="text" size="18" maxlength="18">
<input name="Submit" type="submit" value="查詢">
</form>
<?php
$LisenceKey
="XXXXXXXXXXXXXXXXXXXXXXXXX";
if&
#40;$_POST["Query"]!=''&#41;
{
 require_once&
#40;"SOAP/Client.php"&#41;;
 
$wsdl=new SOAP_WSDL&#40;'http&#58;//api.google.com/GoogleSearch.wsdl'&#41;;
 
$Google $wsdl->getProxy&#40;&#41;;
 
$Result=$Google->doGoogleSearch&#40;
  
$LisenceKey,
  
"allintext&#58; ".iconv&#40;"Big5","UTF-8",$_POST["Query"]&#41;, 0, 10, false,
  
""false""""""&#41;;
 
$TotalRows=count&#40;$Result->resultElements&#41;;
 
for&#40;$i=0;$i<$TotalRows;$i++&#41;
 
{
  
?>

  <table border=1 width="640" >
  <tr bgcolor="#FFCC66">
  <td>
  <a href="<?php echo $Result->resultElements[$i]->URL;?>">
  <?php echo iconv&#40;"UTF-8","Big5",$Result->resultElements[$i]->title&#41;;?>
  </a>
  </tD>
  </tr>
  <tr>
  <td>
  <?php echo iconv&#40;"UTF-8","Big5",$Result->resultElements[$i]->snippet&#41;;?>
  </tD>
  </tr>
  </table>
  <br>
  <?php
 
}
}
?>


$LisenceKey是google提供的
想試玩看看的人可以上
http://www.google.com/api/
去申請一個吧
google search服務是免費的不過一天只能查1000次

//這是载入SOAP所需要用到的物件
require_once("SOAP/Client.php")
//產生一個$wsdl Web Service物件
//'http://api.google.com/GoogleSearch.wsdl'這個是wsdlweb service描述檔
//這樣才知道這個Web service提供了哪些服務
$wsdl=new SOAP_WSDL('http://api.google.com/GoogleSearch.wsdl');
//產生一個$Google物件(這個物件就是google提供的Web Service)
$Google = $wsdl->getProxy();
//這裡呼叫了一個Google提供的GoogleSearch服務
//這邊就不詳細說明GoogleSearch詳細內容
//有興趣的人就自行到http://www.google.com/api/
//那邊有完整的google search API說明
$Result=$Google->doGoogleSearch(
  $LisenceKey,
  "allintext: ".iconv("Big5","UTF-8",$_POST["Query"]), 0, 10, false,
  "", false, "", "", "");


這就是Client端的呼叫方式
很簡單吧
下回再來分享
如何提供一個Web Service給其他人來使用吧
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

lschang

  • 懷疑的國中生
  • **
  • 文章數: 82
    • 檢視個人資料
[心得]在php中使用Web Service
« 回覆 #1 於: 2004-12-06 20:50 »
期待中

williamshing

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
[心得]在php中使用Web Service
« 回覆 #2 於: 2004-12-07 17:43 »
不好意思,小弟不會安裝套件,我已經下載套件了,但是要如何安裝呢?可否麻煩各位教一下,謝謝

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
[心得]在php中使用Web Service
« 回覆 #3 於: 2004-12-07 18:10 »
使用rpm方式安裝php的人
得額外安裝pear的rpm套件
pear模組名稱是叫做php-pear
先用rpm -q php-pear
看看有沒有裝pear
沒有裝的人自己補裝一下吧
裝好後直接執行
pear xxx.tgz
xxx.tgz就是抓下來的pear模組
pear模組也是有相依性的喔
所以請把它需要的套件都抓齊了一次安裝上去吧
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

williamshing

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
[心得]在php中使用Web Service
« 回覆 #4 於: 2004-12-08 08:42 »
不好意思,如果我的電腦是win2000,那該如何安裝呢,謝謝

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
[心得]在php中使用Web Service
« 回覆 #5 於: 2004-12-08 09:01 »
沒試過在windows底下裝php
印象中直接抓取installer安裝的話是不會包含pear模組的
可能得抓完整的zip安裝檔才有包含pear吧
完整的安裝zip大概有7MB
至於詳細安裝法就不清楚了
看看有沒有哪個善心人士
來個windows底下的安裝教學吧
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
[心得]在php中使用Web Service
« 回覆 #6 於: 2004-12-08 09:43 »
windows 的安裝其實是要先把 web server 搞好
之後只要掛上 php 模組就可以了(至少以 Apache 而言)
至不濟是用 cgi 的方式跑
'm no more than a fxxking coding monkey....

b1uml

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
[心得]在php中使用Web Service
« 回覆 #7 於: 2005-09-29 22:11 »
怪了.小弟試了這一個程式碼
似乎沒有反應也..>.<
============
昨晚試了一個晚上.
發現原來是 SOAP套件沒裝..
裝了之後..感覺上程式有在動作..
但是結果沒有跑出來@@

chenmingwu

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
回覆: [心得]在php中使用Web Service
« 回覆 #8 於: 2009-04-02 23:40 »
我輸入之後也是感覺他有在運作
只是沒有output~
怪~