cURL
Haxx ad
libcurl

curl's project page on SourceForge.net

Sponsors:
Haxx

cURL > Mailing List > Monthly Index > Single Mail

curlpp mailing list Archives

[cURLpp] curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies) fails

From: Aman Deep <aman4peace_at_gmail.com>
Date: Mon, 22 Oct 2007 08:43:13 +0530

Hi Folks,

I am unable to run the attached code successfully.
I'll be grateful if you can give me a clue about whats wrong.

Following is the error log which I get

* About to connect() to www.google.com port 80
* Trying 64.233.189.104... * connected
* Connected to www.google.com (64.233.189.104) port 80
> GET / HTTP/1.1

Host: www.google.com

Pragma: no-cache

Accept: */*

< HTTP/1.1 302 Found

< Location: http://www.google.co.in/

< Cache-Control: private

* Added cookie
PREF="ID=c5cfacd877c43c6c:TM=1193019997:LM=1193019997:S=S0Ep0Yq1lPvupIPh"
for domain google.com, path /, expire 1256091997
< Set-Cookie:
PREF=ID=c5cfacd877c43c6c:TM=1193019997:LM=1193019997:S=S0Ep0Yq1lPvupIPh;
expires=Wed, 21-Oct-2009 02:26:37 GMT; path=/; domain=.google.com

< Content-Type: text/html

< Server: gws

< Content-Length: 221

< Date: Mon, 22 Oct 2007 02:26:37 GMT

<HTML><HEAD><meta http-equiv="content-type"
content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>.

</BODY></HTML>

* Connection #0 to host www.google.com left intact
Cookies, curl knows:
Curl curl_easy_getinfo failed: a libcurl function was given a bad argument
Thanks a lot.

Sincerely yours,
Aman

/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* This example shows usage of simple cookie interface.
*/

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <time.h>

#include <curl/curl.h>

static void
print_cookies(CURL *curl)
{
  CURLcode res;
  struct curl_slist *cookies;
  struct curl_slist *nc;
  int i;

  printf("Cookies, curl knows:\n");
  res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
  if (res != CURLE_OK) {
    fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
curl_easy_strerror(res));
    exit(1);
  }
  nc = cookies, i = 1;
  while (nc) {
    printf("[%d]: %s\n", i, nc->data);
    nc = nc->next;
    i++;
  }
  if (i == 1) {
    printf("(none)\n");
  }
  curl_slist_free_all(cookies);
}

int
main(void)
{
  CURL *curl;
  CURLcode res;

  curl_global_init(CURL_GLOBAL_ALL);
  curl = curl_easy_init();
  if (curl) {
    char nline[256];

    curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/"); /*
google.com sets "PREF" cookie */
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* just to start the
cookie engine */
    res = curl_easy_perform(curl);
    if (res != CURLE_OK) {
      fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
      return 1;
    }

    print_cookies(curl);

    printf("Erasing curl's knowledge of cookies!\n");
    curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");

    print_cookies(curl);

    printf("-----------------------------------------------\n"
           "Setting a cookie \"PREF\" via cookie interface:\n");
#ifdef WIN32
#define snprintf _snprintf
#endif
    /* Netscape format cookie */
    snprintf(nline, 256, "%s\t%s\t%s\t%s\t%u\t%s\t%s",
      ".google.com", "TRUE", "/", "FALSE", time(NULL) + 31337, "PREF",
"hello google, i like you very much!");
    res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
    if (res != CURLE_OK) {
      fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
curl_easy_strerror(res));
      return 1;
    }

    /* HTTP-header style cookie */
    snprintf(nline, 256,
      "Set-Cookie: OLD_PREF=3d141414bf4209321; "
      "expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
    res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
    if (res != CURLE_OK) {
      fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
curl_easy_strerror(res));
      return 1;
    }

    print_cookies(curl);

    res = curl_easy_perform(curl);
    if (res != CURLE_OK) {
      fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
      return 1;
    }
  }
  else {
    fprintf(stderr, "Curl init failed!\n");
    return 1;
  }

  curl_global_cleanup();
  return 0;
}

_______________________________________________
cURLpp mailing list
cURLpp_at_rrette.com
http://www.rrette.com/mailman/listinfo/curlpp
Received on 2007-10-22

These mail archives are generated by hypermail.

donate! Page updated November 12, 2010.
web site info

File upload with ASP.NET