4

http://www.microsoft.com/にアクセスすると、http ://www.microsoft.com/en-us/default.aspx にリダイレクトされます

CURL lib を使用して応答/リダイレクト URL を取得するにはどうすればよいですか?

curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &reUrl); を試してみます。これはhttp://www.microsoft.com/を取得します

curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &reUrl); これは常に NULL になります

助けてくれてありがとう

4

1 に答える 1

8

CURLOPT_FOLLOWLOCATIONを_1

#include <stdio.h>
#include <curl/curl.h>

int main(int argc, char** argv)
{
    CURL *curl;
    CURLcode curl_res;

    curl_global_init(CURL_GLOBAL_ALL);

    curl = curl_easy_init();

    if (curl)
    {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.microsoft.com");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 

        /* Perform the request, curl_res will get the return code */ 
        curl_res = curl_easy_perform(curl);

        /* Check for errors */ 
        if(curl_res != CURLE_OK)
          fprintf(stderr, "curl_easy_perform() failed: %s\n",
                  curl_easy_strerror(curl_res));

        if(CURLE_OK == curl_res) 
        {
             char *url;
             curl_res = curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url);

             if((CURLE_OK == curl_res) && url)
                 printf("CURLINFO_EFFECTIVE_URL: %s\n", url);
        }

        /* always cleanup */ 
        curl_easy_cleanup(curl);

        /* we're done with libcurl, so clean it up */ 
        curl_global_cleanup();

    }
    else
    {
        printf("cURL error.\n");
    }

    return 0;
}

以下が表示されます。

CURLINFO_EFFECTIVE_URL: http://www.microsoft.com/en-us/default.aspx
于 2013-04-29T12:21:10.297 に答える