2009-07-09 28 views
1

簡單。我創建了一個LINQ-TO-SQL實體模型,創建了一個網站,並在這個網站上添加了一個數據服務(* .svc),並通過編寫一個簡單的.NET控制檯應用程序來確保它可行。該服務工作正常,不能修改。從WIN32 Delphi應用程序中消費ADO.NET數據服務。怎麼樣?

現在我要爲WIN32寫一個Delphi應用程序(2007),它將不得不調用這個數據服務。雖然Delphi沒有導入SOAP服務的重大問題,但由於它不提供WSDL,因此無法導入此服務...

因此,有兩個選項。我可以弄清楚如何基於這個數據服務生成一個WSDL,或者我必須找到另一種方式來使用這個服務。 (或者放棄,但我討厭退出這個挑戰。)那麼,有什麼建議嗎?

回答

1

ADO.NET數據服務是REST服務。它們不是SOAP WebServices,我不認爲REST使用WSDL。您可以使用HTTP GET/PUT/POST/DELETE從Delphi調用REST服務。你可以使用Indy的TIdHTTPClient。有關url示例,請參閱http://msdn.microsoft.com/en-us/library/cc668786.aspx。結果爲Atom格式,這是一種XML格式。你可以用TXMLDocument解析它。他們也可以返回JSON

+0

是的,那將是我擔心的「另一種方式」。 – 2009-07-10 11:16:24

1

也許你可以使用項目Jedi「url grabber」組件來使用服務。過去,我已經設法使用這些數據獲取實時分享數據。我不確切知道你的設置是如何工作的,但也許這些會有所幫助。

http://www.delphi-jedi.org/

+0

那麼,我自己更喜歡導入「winhttp.dll」類型的庫來從網頁抓取頁面。這也允許像GET,POST,PUT等東西。另一個優點是,這將使用默認的IE設置訪問互聯網,所以不用擔心代理和其他東西。過去我確實使用過Jedi,但對於某些應用程序,我認爲這隻會增加太多開銷。仍然,很好的答案。 – 2009-07-10 11:15:13

0

你還應該看看synapse,這是一個易於使用的小型庫,可與REST一起使用。最新版本,可以通過SVN下載,在Delphi 2009中運行良好。