curl-library
Re: libcurl produces 0byte files for some refered links
Date: Wed, 08 Oct 2008 13:27:06 -0400
Jan wrote:
> Wei,
>
> like i wrote in the beginning of my post:
> http://mail.google.com/mail/?hl=nl&tab=nm <?hl=nl&tab=nm>
> http://www.google.com/calendar/render?hl=nl&tab=nc
> <http://www.google.com/calendar/render?hl=nl&tab=nc>
>
> --
> Jan
>
> 2008/10/7 Wei Weng <wweng_at_acedsl.com <mailto:wweng_at_acedsl.com>>
>
> mr orgi wrote:
> > Hello,
> >
> > i have some problems using libcurl in my program.
> >
> > if i run it for example for all sublinks of news.google.com
> <http://news.google.com>
> > <http://news.google.com> some links are stored as 0byte files.
> >
> > some examples of these links:
> > http://mail.google.com/mail/?hl=nl&tab=nm
> <http://mail.google.com/mail/?hl=nl&tab=nm>
> > <http://mail.google.com/mail/?hl=nl&tab=nm
> <http://mail.google.com/mail/?hl=nl&tab=nm>>
> > http://www.google.com/calendar/render?hl=nl&tab=nc
> <http://www.google.com/calendar/render?hl=nl&tab=nc>
> > <http://www.google.com/calendar/render?hl=nl&tab=nc
> <http://www.google.com/calendar/render?hl=nl&tab=nc>>
> >
> > these are all links which are refered to another link.. i have
> read the
> > manpages and FOLLOWLOCATION should be the solution for this
> problem. but
> > for some links it still not works.
> >
> > my curl options are the following:
> >
> > CURL *curl;
> > curl = curl_easy_init();
> > curl_easy_setopt(curl, CURLOPT_URL, link);
> > curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
> > curl_easy_setopt(curl, CURLOPT_MAXREDIRS, -1);
> > curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
> > curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
> > curl_easy_perform(curl);
> > curl_easy_cleanup(curl);
> >
> > libcurl version: 7.16.4
> > Visual Studio 2008
> > libcurl compiled as static Multi Threaded
> >
> > any suggestions?
> >
> > thanks in advance,
> > Jan
>
> What are the links that it doesn't work for?
>
> Thanks
> Wei
>
>
Jan,
I wrote a small test program.
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
const char* link;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl)
{
link = "http://www.google.com/calendar/render?hl=nl&tab=nc";
curl_easy_setopt(curl, CURLOPT_URL, link);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, -1);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fprintf(stderr, "curl told us %d\n", res);
}
curl_global_cleanup();
return 0;
}
I can successfully connect to google calendar, in fact, below is part of the
VERBOSE output:
[ 13:20:25 ] wweng /home/wweng $ ./a.out
* About to connect() to www.google.com port 80 (#0)
* Trying 74.125.47.99... * connected
* Connected to www.google.com (74.125.47.99) port 80 (#0)
> GET /calendar/render?hl=nl&tab=nc HTTP/1.1
Host: www.google.com
Accept: */*
< HTTP/1.1 302 Moved Temporarily
< Location:
https://www.google.com/accounts/ServiceLogin?service=cl&passive=true&nui=1&continue=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender%3Fhl%3Dnl%26tab%3Dnc&followup=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender%3Fhl%3Dnl%26tab%3Dnc&hl=nl
< Content-Type: text/html; charset=UTF-8
< Date: Wed, 08 Oct 2008 17:20:40 GMT
< Expires: Wed, 08 Oct 2008 17:20:40 GMT
< Cache-Control: private, max-age=0
< Content-Length: 438
< Server: GFE/1.3
<
* Ignoring the response-body
* Connection #0 to host www.google.com left intact
* Issue another request to this URL:
'https://www.google.com/accounts/ServiceLogin?service=cl&passive=true&nui=1&continue=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender%3Fhl%3Dnl%26tab%3Dnc&followup=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender%3Fhl%3Dnl%26tab%3Dnc&hl=nl'
* About to connect() to www.google.com port 443 (#1)
* Trying 209.85.165.103... * connected
* Connected to www.google.com (209.85.165.103) port 443 (#1)
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
Notice the "< HTTP/1.1 302 Moved Temporarily" line?
So what exactly didn't work for you?
Thanks
Wei
Received on 2008-10-08