Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
HTTPS Form LoginUsing the del.icio.us site, demonstrates how to programmatically login via a form. Downloads: MS Windows Visual C/C++ Libraries Linux/CentOS C/C++ Libraries MAC OS X C/C++ Libraries Solaris C/C++ Libraries C++ Builder Libraries #include <CkHttpRequest.h> #include <CkHttp.h> #include <CkString.h> #include <CkHttpResponse.h> void ChilkatSample(void) { CkHttpRequest req; CkHttp http; bool success; // Any string unlocks the component for the 1st 30-days. success = http.UnlockComponent("Anything for 30-day trial"); if (success != true) { printf("%s\n",http.lastErrorText()); return; } // Cookies may be persisted to a directory in the filesystem, // or alternatively cached in memory by using the "memory" // keyword: http.put_CookieDir("memory"); // Accumulated cookies are sent with each GET/POST: http.put_SaveCookies(true); // Cookies received in HTTP responses are to be saved: http.put_SendCookies(true); // Get the page with the login form. We're only doing this // just in case there are cookies that need to be cached // and re-sent in the next step: CkString html; html = http.quickGetStr("https://secure.del.icio.us/login"); if (http.get_LastStatus() != 200) { printf("%s\n",http.lastErrorText()); return; } // Examining the "Page Info" in FireFox reveals a form with // a target of https://secure.del.icio.us/login with // fields of "user_name", "password", and "login". The "login" // field is nothing more than the submit button and holds // the value "log in". // Build an HTTP POST Request: req.UsePost(); req.put_Path("/login"); req.AddParam("user_name","chilkatsoft"); req.AddParam("password","****"); req.AddParam("login","log in"); // Send the HTTP POST and get the response. Note: This is a blocking call. // The method does not return until the full HTTP response is received. CkString domain; int port; bool ssl; domain = "secure.del.icio.us"; port = 443; ssl = true; CkHttpResponse *resp = 0; resp = http.SynchronousRequest(domain,port,ssl,req); if (resp == 0 ) { printf("%s\n",http.lastErrorText()); } else { int responseStatus; responseStatus = resp->get_StatusCode(); if (responseStatus == 302) { // We have a redirect. Follow it... // Note: the FollowRedirects property causes // 301/302 responses to GET requests to be // automatically followed. http.put_FollowRedirects(true); html = http.quickGetStr(resp->getHeaderField("Location")); if (http.get_LastStatus() != 200) { printf("%s\n",http.lastErrorText()); return; } } else { html = resp->bodyStr(); } printf("%d\n",responseStatus); // Display the HTML source of the page returned. printf("%s\n",(const char *)html); } } |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.