PHP5中的SOAP擴展的應用及注意的問題
既然說到SOAP就先對這個有個大概了解吧。
SOAP(簡單對象訪問協議)定義了客戶機與服務器之間傳遞的消息。消息采用 XML 格式。SOAP 獨立于平臺、編程語言、網絡和傳輸層。
這次做的項目中需要提供WebService服務,沒話說,由于是PHP的項目,首先就按照習慣用了NuSOAP,結果讓我郁悶了好久,程序返回的是一個數組,但是用print_r()打印出來是空的,用count()看了一下大小為1,郁悶ing。看了一下response數據是存在的啊。又對照了一下以前做的SOAP(是在PHP4上的),兩個response有點不同,這才反應過來是PHP5跟PHP4的版本不一樣。
打開php.ini,找到擴展模塊那部分,把soap的模塊加載上,又重新寫了一下Server端和Client端,繼續測試。總是出現“looks like we got no XML document”的error。難道是用法錯了,手頭正好有本《PHP5 Power Programming》找到SOAP的地方,沒找到問題,又跑到zend的官方網站上看了一下SOAP的介紹和示例(http://www.zend.com/php5/articles/php5-SOAP.php?out=dynamicwebpages),沒錯啊。去Google搜索這個錯誤,最后還是連到了zend的一個blog上(http://www.zend.com/php5/articles/php5-SOAP.php?article=php5-SOAP&kind=php5&id=5085&open=1&anc=0&view=1),前半部分跟上面那個是一樣的,直接跳過,看下面的Comment,發現好多人都遇到了這個問題,人提到是在PHP開始標簽之前存在blank character,可我的沒有啊,我的有個require_once("mainfile.php"),把這句注釋掉以后就沒問題了,又繼續根據mainfile.php追蹤下去,發現是在類的文件中PHP結束標簽之后有blank character,刪除掉就沒問題了。
在zend上的comments里還有人提到是XML文件的編碼問題,這個我沒有測試。終于搞定了這個問題,繼續寫接口,哎……
郁悶本來想把全部代碼貼上來,結果排版會有問題,還是貼些重要的吧!
Server端:

2

3

4

5

Client端:

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

posted on 2006-04-04 11:03 編程之道 閱讀(1819) 評論(1) 編輯 收藏 引用 所屬分類: web編程