用libcurl庫訪問一個URL
食用方法:
1. 調用curl_global_init()初始化libcurl
2. 調用curl_easy_init()函數得到 easy interface型指針
3. 調用curl_easy_setopt()設置傳輸選項
4. 根據curl_easy_setopt()設置的傳輸選項,實現回調函數以完成用戶特定任務
5. 調用curl_easy_perform()函數完成傳輸任務
6. 調用curl_easy_cleanup()釋放內存
7. 調用curl_global_cleanup()析構libcurl
直接放代碼:
#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h> //exit
int call_url(char *url);
int main(int argc, char **argv)
{
if(argv[1]==NULL)
{
printf("usage:%s url\n",argv[0]);
exit(1);
}
call_url(argv[1]);
return 0;
}
int call_url(char *url)
{
// 初始化libcurl
CURLcode return_code;
//不要在每個線程中都調用curl_global_init,應該將該函數的調用放在主線程中。
return_code = curl_global_init(CURL_GLOBAL_ALL);//初始化所有的可能的調用
if (CURLE_OK != return_code)
{
printf("init libcurl failed.");
return -1;
}
CURL *easy_handle = curl_easy_init();
if (NULL == easy_handle)
{
printf("get a easy handle failed.");
curl_global_cleanup();
return -1;
}
//curl_easy_setopt(easy_handle,CURLOPT_URL,"www.baidu.com");
curl_easy_setopt(easy_handle,CURLOPT_URL,url);//
//不做其他設置的話,默認輸出到屏幕:
//執行請求
curl_easy_perform(easy_handle);
curl_easy_cleanup(easy_handle);
curl_global_cleanup();//對curl_global_init做的工作清理
}
編譯方式:
gcc curl_1.c -lcurl
訪問百度,看結果: