2009年5月18日 星期一

使用C#連結nusoap撰寫的WebService

這學期有修一門WebService課程,使用的是PHP的nusoap來實作,雖然老師說寫個簡單的查詢就好,但我總喜歡挑戰沒玩過的東西,於是打算寫個SOAP的聊天室,使用nusoap+sqlite當作Server端,用戶端使用C#來撰寫,去年幫學長寫專題時有碰過一點WebService,依稀還記得Web References,不過nusoap無法自動產生WSDL,於是大概花了一個星期的時間到處找定義WSDL的範例,終於讓SharpDevelop可以抓到完整的參考,以上的內容可以參考這份簡單的範例自己玩看看

http://www.sanity-free.org/125/php_webservices_and_csharp_dotnet_soap_clients.html

接下來的部分就是C#在與nusoap連接時的疑難排解,首先是連接nusoap會出現HTTP 417錯誤,必須在連接前加入以下設定
request.ServicePoint.Expect100Continue = false;

http://www.douban.com/group/topic/5509228/

C#連接nusoap中文會有亂碼,必須在nusoap建立soap server時額外設定
$server=new soap_server();
$server->soap_defencoding = 'UTF-8';
$server->decode_utf8=false;

http://coolstr.cnblogs.com/archive/2005/08/25/222440.html