使用Delphi中的oData服务

使用Delphi中的oData服务,delphi,odata,delphi-xe,Delphi,Odata,Delphi Xe,我如何使用Delphi的oData Web服务(我正在尝试与新的Bing搜索Azure API交互)?在Delphi中几乎没有这样做的信息。这里有一篇文章,但从德尔福的角度解释如何使用这种服务并没有多大帮助。有人能提供一个简单的例子吗?下面是一个使用netflix oData服务在Delphi XE中使用oData服务的非常简单的例子: program oDataDemo; {$APPTYPE CONSOLE} uses SysUtils, msxml, Variants, Active

我如何使用Delphi的oData Web服务(我正在尝试与新的Bing搜索Azure API交互)?在Delphi中几乎没有这样做的信息。这里有一篇文章,但从德尔福的角度解释如何使用这种服务并没有多大帮助。有人能提供一个简单的例子吗?

下面是一个使用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.

它不应该是URLEncode()而不是UTF8Encode(oDataServiceURI+oDataFilter)?我将研究URLEncode,我的理解是URI应该是UTF-8编码的。请参见此链接:以及当前标准的部分:Delphi和rest的所有示例都是这种格式。xmlResults作为文本的用途是什么?如果Delphi要求程序员手动解析Atom pub xml,那么Delphi实际上不支持Rest。它只支持httprequest。XE3真的解决了这个问题吗?我想这取决于RESTful服务返回的内容,XML和JSON都很容易在Delphi中解析。对于JSON,我通常使用一个叫做SuperObject的第三方库,它简化了解析工作。我在Delphi中并没有找到解析odata的简单方法。即使Remy在中给出的优秀JSON示例也不能与odata一起使用。