【问题标题】:Consume oData service from Delphi使用 Delphi 的 oData 服务
【发布时间】:2012-07-28 02:58:28
【问题描述】:

如何使用 Delphi 的 oData Web 服务(我正在尝试与新的 Bing Search Azure API 交互)?在 Delphi 中几乎没有信息可以做到这一点。有一个帖子here,但它对从 Delphi 的角度解释如何使用此类服务​​没有多大帮助。谁能提供一个简单的例子?

【问题讨论】:

    标签: delphi odata delphi-xe


    【解决方案1】:

    下面是一个非常简单的例子,在 Delphi XE 中使用 netflix oData 服务来使用 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 编码的,请参阅此链接:stackoverflow.com/a/913653/117859 和当前标准部分:en.wikipedia.org/wiki/…
    • 所有 Delphi 的例子和其余的都是这种格式。 xmlResults 作为文本有什么用?如果 Delphi 需要程序员手动解析 Atom pub xml,那么 Delphi 并不真正支持 Rest。它只支持 HttpRequests。 XE3 真的解决了这个问题吗?
    • 我想这取决于你的 RESTful 服务返回什么,XML 和 JSON 在 Delphi 中都很容易解析。对于 JSON,我通常使用名为 SuperObject 的第三方库,它使解析工作变得轻松。
    • 我还没有找到在 Delphi 中解析 odata 的任何简单方法。即使是 Remy 在stackoverflow.com/questions/24815625/… 中给出的优秀 JSON 示例也不适用于 odata。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多