2012-03-16 82 views
7

¿Alguien puede publicar un ejemplo simple de una solicitud JSON POST a una API usando Delphi 2005. He encontrado numerosos ejemplos usando GET pero el proveedor API no permite solicitudes a través de HTTP GET y no admite codificación URL parámetros.API REST Delphi Publicar muestra

Soy nuevo en los servicios de REST (he usado SOAP en el pasado), por favor avíseme si necesita más información.

Respuesta

7

Simplemente usaría el componente TIdHTTP de Indy y llama al método Post. Pase la URL como primer argumento y su cadena JSON como segundo argumento. Algo como esto:

procedure TForm1.Button1Click(Sender: TObject); 

    var jsonToSend:TStringList; 
     http:TIDHttp; 
    begin 
    http := TIDHttp.Create(nil); 
    http.HandleRedirects := true; 
    http.ReadTimeout := 5000; 
    jsonToSend:=TStringList.create; 
    jsonToSend.Add('{ Your JSON-encoded request goes here }'); 
    Memo1.Lines.Text:=http.Post('http://your.restapi.url', jsonToSend); 
    jsonToSend.Destroy; 
    http.Destroy; 
    end; 
end. 

Asumo que ya son capaces de codificar y decodificar el JSON y que se acaba preguntando cómo realizar un HTTP POST usando Delphi.

+4

este código pierde una instancia de TStringList por llamada – mjn

+1

... y perderá memoria (instancias de http + jsontosend) si se produce una excepción en http.post() ... –

6

Una opción, usando una parte de nuestra Mormot Open Source marco:

uses SynCrtSock, SynCommons; 
var t: variant; 
begin 
    TDocVariant.New(t); 
    t.name := 'john'; 
    t.year := 1982; 
    TWinHTTP.Post('http://servername/resourcename',t,'Content-Type: application/json'); 
end; 

Tenga en cuenta que aquí se puede construir su contenido JSON usando un custom variant storage, que se convertirá en forma de texto JSON cuando se envía al servidor.