Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
HTTP Session with CookiesHow to keep a session with cookies. Demonstrates how to login to WordPress.
// Needs #include <CkHttpRequest.h> // Needs #include <CkHttp.h> // Needs #include <CkHttpResponse.h> CkString strOut; 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) { strOut.append(http.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // This example will demonstrate maintaining a session with // cookies by doing a simple login to a WordPress blog. // Indicate that cookies are to be saved and re-sent. // Instead of using a cookie file, you may use the string "memory" // to save cookies to memory. http.put_CookieDir("memory"); http.put_SendCookies(true); http.put_SaveCookies(true); // Let's first hit the chilkat.wordpress.com login page to make sure // we have any initial cookies... const char * html; html = http.quickGetStr("http://chilkat.wordpress.com/wp-login.php"); if (html == 0 ) { strOut.append(http.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Build an HTTP POST request to login req.UsePost(); req.put_Path("/wp-login.php"); req.AddParam("log","chilkat"); req.AddParam("pwd","myPassword"); req.AddParam("rememberme","forever"); req.AddParam("wp-submit","Login"); req.AddParam("redirect_to","/wp-admin/"); req.AddHeader("Referer","http://chilkat.wordpress.com/wp-login.php"); // 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. const char * domain; long port; bool ssl; domain = "chilkat.wordpress.com"; port = 80; ssl = false; CkHttpResponse *resp = 0; resp = http.SynchronousRequest(domain,port,ssl,req); if (resp == 0 ) { strOut.append(http.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Is this a 302 redirect? if (resp->get_StatusCode() == 302) { // Get the redirect URL: const char * redirectUrl; redirectUrl = resp->getHeaderField("Location"); html = http.quickGetStr(redirectUrl); if (html == 0 ) { strOut.append(http.lastErrorText()); strOut.append("\r\n"); } else { strOut.append(html); strOut.append("\r\n"); } } else { strOut.append(resp->bodyStr()); strOut.append("\r\n"); } SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.