2012-03-16 3 views
7

누군가가 Delphi 2005를 사용하여 API에 JSON POST 요청의 간단한 예를 게시 할 수 있습니까? GET을 사용하여 여러 가지 예를 발견했지만 API 제공자가 HTTP GET을 통한 요청을 허용하지 않고 URL 인코딩을 지원하지 않습니다. 매개 변수.Delphi REST API 게시물 샘플

저는 REST 서비스를 호출하기에 새로운 것이 었습니다 (과거에는 SOAP을 사용 했음). 자세한 정보가 필요하면 알려주십시오.

답변

7

그냥 Indy의 TIdHTTP 구성 요소를 사용하고 Post 메서드를 호출하면됩니다. URL을 첫 번째 인수로, JSON 문자열을 두 번째 인수로 전달하십시오. 이런 식으로 뭔가 :

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. 

나는 이미 인코딩 및 JSON을 디코딩 할 수 있으리라 믿고있어 그리고 당신은 델파이를 사용하여 HTTP 포스트를 수행하는 방법을 요구하고있다.

+4

이 코드는 http : //post()에서 예외가 발생하면 – mjn

+1

... 호출 당 TStringList 인스턴스를 누설하고 메모리 (http + jsontosend instances)가 누출됩니다. –

6

하나 개의 옵션, 우리 mORMot 오픈 소스 프레임 워크의 일부 사용 :로 전송 할 때 JSON 텍스트로 변환됩니다 custom variant storage, 사용하여 JSON 컨텐츠를 구성 할 수 있습니다 여기에

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; 

주 섬기는 사람.