MFC Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

MFC Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML-to-XML
HTTP
IMAP
MHT / HTML Email
MIME
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip


 

 

 

 

 

 

 

 

HTTP Session with Cookies

How to keep a session with cookies. Demonstrates how to login to WordPress.

Download Chilkat C/C++ Libraries for VC++ 9.0 / Win32

Download Chilkat C/C++ Libraries for VC++ 8.0 / Win32

Download Chilkat C/C++ 64-bit Libraries for VC++ 8.0 / x64

Download Chilkat Visual Studio 2005 C/C++ Libs for Windows Mobile, Pocket PC, SmartPhone, WinCE

Download Chilkat C/C++ Libraries for VC++ 7.0 / Win32

Download Chilkat C/C++ Libraries for VC++ 6.0 / Win32

Download Chilkat C/C++ Libraries for VC++ 6.0, Win 95/98/NT4 Compatible

// 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.