libcurl之初体验

#include <iostream>
#include <curl/curl.h>
#include <string>

using std::cout;
using std::endl;

size_t string_write(void* content,size_t size,size_t nmemb,void* userp)
{
	((std::string*)userp)->append((char*)content,size*nmemb);
	return size*nmemb;
}

CURLcode read_content_from_url(const std::string& url,std::string* content,long time_out=30)
{
	CURLcode code(CURLE_FAILED_INIT);
	CURL* curl=curl_easy_init();
	if(curl)
	{
		if(CURLE_OK==(code=curl_easy_setopt(curl,CURLOPT_URL,url.c_str())) //不用讲
				&& CURLE_OK==(code=curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,string_write)) //不用讲
				&& CURLE_OK==(code=curl_easy_setopt(curl,CURLOPT_WRITEDATA,content))  //不用讲
				&& CURLE_OK==(code=curl_easy_setopt(curl,CURLOPT_TIMEOUT,time_out))  //延迟
				&& CURLE_OK==(code=curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L)) //跟进
				&& CURLE_OK==(code=curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1L))) //不要进度条
		{
			code=curl_easy_perform(curl);
		}
		curl_easy_cleanup(curl);
	}
	return code;
}

int main(int argc,char* argv[])
{
	std::string content;
	std::string url("http://www.baidu.com");
	CURLcode code=read_content_from_url(url,&content);
	if(code==CURLE_OK)
	{
		cout<<content<<endl;
	}
	else
	{
		std::cerr<<"Error: "<<curl_easy_strerror(code)<<endl;
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值