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
(Unicode C) HTTP POST and Stream Response to FileDemonstrates how to send an HTTP POST and stream the response body directly to a file.
#include <C_CkRestW.h> #include <C_CkUrlW.h> #include <C_CkStreamW.h> void ChilkatSample(void) { HCkRestW rest; HCkUrlW url; BOOL bAutoReconnect; BOOL success; int responseStatusCode; HCkStreamW bodyStream; const wchar_t *errResponse; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. rest = CkRestW_Create(); url = CkUrlW_Create(); // This URL will emit a response that echos the query params (name and age) CkUrlW_ParseUrl(url,L"https://www.chilkatsoft.com/readPost.asp"); // Connect to the web server bAutoReconnect = TRUE; success = CkRestW_Connect(rest,CkUrlW_host(url),CkUrlW_getPort(url),CkUrlW_getSsl(url),bAutoReconnect); if (success != TRUE) { wprintf(L"%s\n",CkRestW_lastErrorText(rest)); CkRestW_Dispose(rest); CkUrlW_Dispose(url); return; } CkRestW_AddQueryParam(rest,L"name",L"John"); CkRestW_AddQueryParam(rest,L"age",L"33"); // Send the HTTP POST. success = CkRestW_SendReqFormUrlEncoded(rest,L"POST",CkUrlW_path(url)); if (success != TRUE) { wprintf(L"%s\n",CkRestW_lastErrorText(rest)); CkRestW_Dispose(rest); CkUrlW_Dispose(url); return; } // Read the response header. responseStatusCode = CkRestW_ReadResponseHeader(rest); if (responseStatusCode < 0) { wprintf(L"%s\n",CkRestW_lastErrorText(rest)); CkRestW_Dispose(rest); CkUrlW_Dispose(url); return; } wprintf(L"Response status code = %d\n",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) { bodyStream = CkStreamW_Create(); // The stream's sink will be a file. CkStreamW_putSinkFile(bodyStream,L"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 = CkRestW_ReadRespBodyStream(rest,bodyStream,TRUE); if (success != TRUE) { wprintf(L"%s\n",CkRestW_lastErrorText(rest)); CkRestW_Dispose(rest); CkUrlW_Dispose(url); CkStreamW_Dispose(bodyStream); return; } wprintf(L"Successfully streamed the response to a file.\n"); } else { errResponse = CkRestW_readRespBodyString(rest); if (CkRestW_getLastMethodSuccess(rest) != TRUE) { wprintf(L"%s\n",CkRestW_lastErrorText(rest)); } else { wprintf(L"%s\n",errResponse); } } CkRestW_Dispose(rest); CkUrlW_Dispose(url); CkStreamW_Dispose(bodyStream); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.