通过cURL获取web页面及http header信息

cURL是一个强大的HTTP操作库, 可以协助用来操作HTTP相关工作, 减少了代码中使用socket带来的繁琐. 也包含了一个利用URL语法在命令行下工作的文件传输工具curl. 具体可以参考:http://curl.haxx.se/这也是cURL开发者的首页.

以下是我的示例, 用来测试HTTP返回数据的.

#include <stdio.h> #include <curl/curl.h> // 页面数据回调函数 static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *stream ) { int len = size * nmemb; int written = len; fwrite(ptr, size, nmemb, (FILE *)stream); //written = fputs( ptr, (FILE *)stream); return written; } // 返回http header回调函数 static size_t header_callback( void *ptr, size_t size, size_t nmemb, void *stream ) { int len = size * nmemb; int written = len; return written; } int main( void ) { CURL *curl; CURLcode res; struct curl_slist *chunk = NULL; curl = curl_easy_init(); if ( curl ) { // 加入http header 附加信息 chunk = curl_slist_append( chunk, "Accept-Language: zh-cn" ); //chunk = curl_slist_append( chunk, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*" ); chunk = curl_slist_append( chunk, "Accept-Encoding: gzip, deflate" ); chunk = curl_slist_append( chunk, "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; CIBA)" ); chunk = curl_slist_append( chunk, "Connection: Keep-Alive" ); // 设置调试模式 curl_easy_setopt( curl, CURLOPT_VERBOSE, 1L ); curl_easy_setopt( curl, CURLOPT_URL, "192.168.1.25" ); curl_easy_setopt( curl, CURLOPT_HTTPHEADER, chunk ); // 设置回调函数 curl_easy_setopt( curl, CURLOPT_HEADERFUNCTION, header_callback ); curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback ); res = curl_easy_perform( curl ); /* always cleanup */ curl_easy_cleanup( curl ); curl_slist_free_all( chunk ); chunk = NULL; } return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值