Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) HTTP POST and Stream Response to FileDemonstrates how to send an HTTP POST and stream the response body directly to a file.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var rest: TChilkatRest; url: TChilkatUrl; bAutoReconnect: Integer; success: Integer; responseStatusCode: Integer; bodyStream: TChilkatStream; errResponse: WideString; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. rest := TChilkatRest.Create(Self); url := TChilkatUrl.Create(Self); // This URL will emit a response that echos the query params (name and age) url.ParseUrl('https://www.chilkatsoft.com/readPost.asp'); // Connect to the web server bAutoReconnect := 1; success := rest.Connect(url.Host,url.Port,url.Ssl,bAutoReconnect); if (success <> 1) then begin Memo1.Lines.Add(rest.LastErrorText); Exit; end; rest.AddQueryParam('name','John'); rest.AddQueryParam('age','33'); // Send the HTTP POST. success := rest.SendReqFormUrlEncoded('POST',url.Path); if (success <> 1) then begin Memo1.Lines.Add(rest.LastErrorText); Exit; end; // Read the response header. responseStatusCode := rest.ReadResponseHeader(); if (responseStatusCode < 0) then begin Memo1.Lines.Add(rest.LastErrorText); Exit; end; Memo1.Lines.Add('Response status code = ' + IntToStr(responseStatusCode)); // We expect a 200 response status if the file data is coming. // Otherwise, we'll get a string response body with an error message(or no response body). if (responseStatusCode = 200) then begin bodyStream := TChilkatStream.Create(Self); // The stream's sink will be a file. bodyStream.SinkFile := 'qa_output/out.txt'; // Read the response body to the stream. Given that we've // set the stream's sink to a file, it will stream directly // to the file. success := rest.ReadRespBodyStream(bodyStream.ControlInterface,1); if (success <> 1) then begin Memo1.Lines.Add(rest.LastErrorText); Exit; end; Memo1.Lines.Add('Successfully streamed the response to a file.'); end else begin errResponse := rest.ReadRespBodyString(); if (rest.LastMethodSuccess <> 1) then begin Memo1.Lines.Add(rest.LastErrorText); end else begin Memo1.Lines.Add(errResponse); end; end; end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.