2012-07-30 111 views
10
OData服務

我如何使用來自德爾福的OData web服務(我試圖用新的Bing搜索API Azure的交互)?在Delphi中幾乎沒有這樣的信息。有一個文章here,但它並沒有幫助很多解釋如何從Delphi的角度來消費這種服務。誰能提供一個簡單的例子?消耗德爾福

回答

3

下面是使用Netflix的ODATA服務消費在Delphi XE OData服務的一個非常簡單的例子:

program oDataDemo; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils, msxml, Variants, Activex; 

var 
    httpRequest: IXMLHttpRequest; 
    oDataServiceURI: String; 
    oDataFilter: String; 
    xmlResults: String; 
begin 
    try 
    oDataServiceURI := 'http://odata.netflix.com/v2/Catalog/Titles()'; 
    oDataFilter := '?$top=10'; 
    coinitialize(nil); 
    httpRequest := CoXMLHTTP.Create; 
    httpRequest.open('GET', UTF8Encode(oDataServiceURI + oDataFilter), false, EmptyParam, EmptyParam); 
    httpRequest.send(EmptyParam); 
    xmlResults := httpRequest.responseText; 
    WriteLn(xmlResults); 

    except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
    end; 
end. 
+0

不是應該的URLEncode()而不是UTF8Encode(oDataServiceURI + oDataFilter)? – mjn 2012-10-22 18:53:00

+1

我馬上去URLEncode的,我的理解是,一個URI應該是UTF-8編碼看到此鏈接:http://stackoverflow.com/a/913653/117859這裏對現行標準的部分:HTTP:// EN .wikipedia.org /維基/百分比百分號編碼編碼#%5Fin%5FA%5FURI – Mattl 2012-10-22 22:48:15

+0

所有用Delphi和其餘的實施例是本格式的。什麼是xmlResults作爲文本的用途?如果Delphi需要程序員手動解析Atom pub xml,那麼Delphi不會真的支持Rest。它只支持HttpRequests。 XE3是否真的解決了這個問題? – reckface 2013-03-15 11:58:35