libcurl http请求的例子

   size_t req_reply(void *ptr, size_t size, size_t nmemb, void *stream)
{
    std::string *str = (std::string*)stream;
    (*str).append((char*)ptr, size*nmemb);
    return size * nmemb;
}

    std::string response;//获取http请求响应
    std::string header;//头信息
    CURLcode code;
    CURL *curl = curl_easy_init();//curl初始化
    if (curl)
    {
        curl_easy_setopt(curl,CURLOPT_CUSTOMREQUEST, "POST");//http请求方式get
        curl_easy_setopt(curl,CURLOPT_URL, server_addr.c_str());//设置服务器url
        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, data.length());//请求数据长度
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());//请求数据,此处为json数据
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); 
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
        curl_easy_setopt(curl, CURLOPT_HEADERDATA, &header);//响应头
        curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);//回调函数
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);//设置写数据
        curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
        curl_easy_setopt(curl, CURLOPT_HEADER, 1);
        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
        code = curl_easy_perform(curl);//执行请求
    }
    curl_easy_cleanup(curl);//清除
    返回的数据就在response中了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值