2008-11-19 16 views
32

प्रश्न What’s the simplest way to call Http GET url using Delphi? से प्रेरित होकर मैं वास्तव में POST का उपयोग करने का नमूना देखना चाहता हूं। कॉल से एक्सएमएल प्राप्त करने के लिए अधिमानतः।डेल्फी का उपयोग करके एचटीपी पोस्ट यूआरएल को कॉल करने का सबसे आसान तरीका क्या है?

जोड़ा गया: पोस्ट डेटा में कोई छवि या अन्य फ़ाइल शामिल करने के बारे में क्या?

उत्तर

43

इंडी का उपयोग करना। अपने पैरामीटर को स्ट्रिंगलिस्ट (नाम = मान) में रखें और बस यूआरएल और स्ट्रिंगलिस्ट के साथ पोस्ट को कॉल करें।

function PostExample: string; 
var 
    lHTTP: TIdHTTP; 
    lParamList: TStringList; 
begin 
    lParamList := TStringList.Create; 
    lParamList.Add('id=1'); 

    lHTTP := TIdHTTP.Create; 
    try 
    Result := lHTTP.Post('http://blahblahblah...', lParamList); 
    finally 
    lHTTP.Free; 
    lParamList.Free; 
    end; 
end; 
+0

टीआईडीएचटीटीपी भी https का समर्थन करता है? – Ampere

+1

हां, टीआईडीएचटीटीपी एचटीटीपीएस का समर्थन करता है। http://stackoverflow.com/a/6693653/19183 –

+0

'lParamList' के पैरामीटर डेल्फी http सर्वर के अनुरोध के अनपेक्षित पैरा के समान हैं (मैं पहले से ही डेल्फी http सर्वर के लिए एक पोस्ट अनुरोध भेजने की कोशिश कर रहा हूं) –

8

फिर से, Synapse TCP/IP library बचाव के लिए। HTTPSEND रूटीन HTTPPostURL का उपयोग करें।

function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean; 

आपका यूआरएल संसाधन भी पोस्ट करने के लिए हो सकता है, URLDATA प्रपत्र डेटा हो सकता है, और अपने XML परिणाम वापस आंकड़े में एक धारा के रूप में आएगा।

+1

Synapse निश्चित रूप से एक और व्यवहार्य विकल्प है। –

14

यहाँ इंडी का उपयोग कर चल Gallery

मैं सामान की इस तरह के और अधिक उदाहरण मिल गया है (मैं उन्हें एक स्क्रीनसेवर मैं गैलरी उपलब्ध परियोजना के लिए डेल्फी में लिखा में उपयोग एक वेब सर्वर पर एक JPEG पोस्ट करने के लिए का एक उदाहरण है here, या गैलरी वेबसाइट here पर अधिक जानकारी)।

मुझे लगता है कि महत्वपूर्ण बात यह है कि जेपीईजी एक धारा के रूप में पारित हो जाता है।

procedure AddImage(const AlbumID: Integer; const Image: TStream; const ImageFilename, Caption, Description, Summary: String); 
var 
    Response: String; 
    HTTPClient: TidHTTP; 
    ImageStream: TIdMultipartFormDataStream; 
begin 

    HTTPClient := TidHTTP.Create; 

    try 
    ImageStream := TIdMultiPartFormDataStream.Create; 
    try 
     ImageStream.AddFormField('g2_form[cmd]', 'add-item'); 
     ImageStream.AddFormField('g2_form[set_albumId]', Format('%d', [AlbumID])); 
     ImageStream.AddFormField('g2_form[caption]', Caption); 
     ImageStream.AddFormField('g2_form[force_filename]', ImageFilename); 
     ImageStream.AddFormField('g2_form[extrafield.Summary]', Summary); 
     ImageStream.AddFormField('g2_form[extrafield.Description]', Description); 

     ImageStream.AddObject('g2_userfile', 'image/jpeg', Image, ImageFilename); 

     Response := HTTPClient.Post('http://mygallery.com/main.php?g2_controller=remote:GalleryRemote', ImageStream); 
    finally 
     ImageStream.Free; 
    end; 
    finally 
    HTTPClient.Free; 
    end; 
end; 
संबंधित मुद्दे

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