2012-07-30 12 views
10

Come posso utilizzare un servizio web OData di Delphi (sto tentando di interagire con la nuova API Azure di ricerca Bing)? Non c'è quasi nessuna informazione per farlo a Delfi. C'è un post here ma non aiuta molto a spiegare come consumare tale servizio dal punto di vista di Delphi. Qualcuno può fornire un semplice esempio?Consuma servizio OData da Delphi

risposta

3

Ecco un esempio molto semplice di consumare un servizio odata in Delphi XE utilizzando il servizio odata Netflix:

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

non dovrebbe essere URLEncode() al posto di UTF8Encode (oDataServiceURI + oDataFilter)? – mjn

+1

Guarderò in URLEncode, la mia comprensione è che un URI dovrebbe essere codificato in UTF-8, vedere questo link: http://stackoverflow.com/a/913653/117859 e la sezione su Current Standard qui: http: // it .wikipedia.org/wiki/Percent-encoding # Percent-encoding% 5Fin% 5Fa% 5FURI – Mattl

+0

Tutti gli esempi con Delphi e resto sono di questo formato. Qual è l'uso di xmlResults come testo? Se Delphi richiede al programmatore di analizzare manualmente il pub Atom xml, Delphi in realtà non supporta il resto. Supporta solo HttpRequests. XE3 si occupa effettivamente di questo? – reckface

Problemi correlati