2012-03-16 18 views
7

कोई पोस्ट कर सकते हैं डेल्फी 2005 का उपयोग कर एक एपीआई के एक JSON पोस्ट अनुरोध का एक सरल उदाहरण मैं का उपयोग कर कई उदाहरण मिल गया है लेकिन एपीआई प्रदाता HTTP GET के माध्यम से अनुरोध की अनुमति नहीं है और URL एन्कोडिंग का समर्थन नहीं करता मापदंडों।डेल्फी REST API पोस्ट नमूना

मैं बाकी सेवाओं बुला लिए नया हूँ (अतीत में साबुन का इस्तेमाल किया है) तो मुझे पता है अगर आप अधिक जानकारी की आवश्यकता बताएं।

उत्तर

7

तुम बस इंडी के TIdHTTP घटक का उपयोग और Post विधि कॉल करेगा। पहला तर्क और दूसरा तर्क के रूप में अपने 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

इस कोड को कॉल – mjn

+1

प्रति एक TStringList उदाहरण लीक ... और स्मृति (http + jsontosend उदाहरण) एक अपवाद http.post भीतर उठाया अगर() का रिसाव हो जाएगा ... –

6

एक विकल्प, हमारे mORMot मुक्त स्रोत ढांचे के कुछ हिस्से का उपयोग कर:

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; 

ध्यान दें कि यहाँ आप एक custom variant storage, जो JSON टेक्स्ट के रूप में परिवर्तित हो जाएगा का उपयोग कर अपने JSON सामग्री जब करने के लिए भेजा निर्माण कर सकते हैं सर्वर।

संबंधित मुद्दे