2012-07-30 14 views
10

¿Cómo puedo consumir un servicio web oData de Delphi (estoy intentando interactuar con la nueva API Bing Search Azure)? Casi no hay información para hacer esto en Delphi. Hay una publicación here, pero no ayuda mucho explicar cómo consumir dicho servicio desde el punto de vista de Delphi. ¿Alguien puede dar un ejemplo simple?Consumir el servicio oData de Delphi

Respuesta

3

Aquí es un ejemplo muy simple de consumir un servicio oData en Delphi XE utilizar el servicio de Netflix 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

¿No debería ser URLEncode() en lugar de UTF8Encode (oDataServiceURI + oDataFilter)? – mjn

+1

Voy a buscar en URLEncode, mi entendimiento es que un URI debe estar codificado en UTF-8 ver este enlace: http://stackoverflow.com/a/913653/117859 y la sección de Estándar actual aquí: http: // en .wikipedia.org/wiki/Codificación porcentual # Codificación porcentual% 5Fin% 5Fa% 5FURI – Mattl

+0

Todos los ejemplos con Delphi y resto son de este formato. ¿Cuál es el uso de xmlResults como texto? Si Delphi requiere que el programador analice manualmente el Atom pub xml, entonces Delphi realmente no admite Rest. Solo admite HttpRequests. ¿XE3 realmente aborda esto? – reckface

Cuestiones relacionadas