libcurl使用记录

1.curl_easy_init  返回easy_handle对象(一个CURL*指针)
2.curl_easy_setopt  设置行为
    2.1 CURLOPT_URL   设置访问URL
    2.2 CURLOPT_HEADERFUNCTION  设置获取到RESPONSE HEADER数据时的回调函数,主要通过curl_easy_getinfo解析其中的应答码,头大小等信息
    2.3 CURLOPT_WRITEFUNCTION   设置接收到数据时的回调函数 回调函数原型为:size_t function( void *ptr, size_t size, size_t nmemb, void *stream); 
    2.4 CURLOPT_HTTPHEADER   设置HTTP请求的头部信息(HEADER)
    2.5 CURLOPT_CUSTOMREQUEST  设置请求方式(METHOD),GET,POST
    2.6 CURLOPT_POSTFIELDS  设置POST的内容
3.curl_easy_perform  执行行为
4.curl_easy_cleanup   完成会话

绝对不应该在线程之间共享同一个libcurl handle(CURL *对象)

// set params  
curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); // url  
curl_easy_setopt(curl, CURLOPT_POST, 0); // get reqest 

//  构建HTTP报文头
struct curl_slist* headers = NULL;
if (listRequestHeader.size() > 0)
{
    std::list<std::string>::iterator iter, iterEnd;
    iter = listRequestHeader.begin();
    iterEnd = listRequestHeader.end();
    for (iter; iter != iterEnd; iter++)
    {
        headers = curl_slist_append(headers, iter->c_str());
    }
    if (headers != NULL)
    {
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);//设置http请求头信息
    }
}

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "post的内容");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); // if want to use https
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false); // set peer and host verify false 
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&response);

curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);

curl_easy_setopt(curl, CURLOPT_HEADER, 1);//响应体中是否包含了头信息,比如Content-Type:application/json;charset=UTF-8

//  timeout
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, nConnectTimeout); // set transport and time out time 
curl_easy_setopt(curl, CURLOPT_TIMEOUT, nTimeout);

//  start request  
res = curl_easy_perform(curl);
if (headers != NULL)
{
    curl_slist_free_all(headers); //free the list again
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值