libcurl http get

37 篇文章 1 订阅
30 篇文章 2 订阅
#include <curl.h>
#define XML_MAX_SIZE    1024*16
char gbuf[XML_MAX_SIZE] = {0};
int len = 0;
static size_t string_write(char *ptr, size_t size, size_t nmemb, char *buf)
{
    pthread_mutex_lock(&write_mutex);
    size_t total = size * nmemb;
    if(total > 0 && ptr != NULL)
    {
        strcpy(gbuf + len, ptr);
        len += total;
    }
    pthread_mutex_unlock(&write_mutex);
    return total;
}
void getSimple(char * url)
{
    CURL *curl;
    curl_global_init(CURL_GLOBAL_ALL);
    curl=curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, string_write);
//        curl_easy_setopt(curl, CURLOPT_WRITEDATA, gbuf);
    }
    curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    return ;
}

C++ 11

static size_t string_write(char *ptr, size_t size, size_t nmemb, string &str)
{
    size_t total = size * nmemb;
    if (total)
        str.append(ptr, total);

    return total;
}

QString CurlSimple::getSimple(QString url)
{
    auto curl_deleter = [](CURL* curl) {
        curl_easy_cleanup(curl);
    };

    string strCurlGet;
    using Curl = unique_ptr<CURL, decltype(curl_deleter)>;

    Curl curl{ curl_easy_init(), curl_deleter };
    if (curl) {
        curl_easy_setopt(curl.get(), CURLOPT_URL, url.toStdString().c_str());
        curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, string_write);
        curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, &strCurlGet);
        CURLcode code = curl_easy_perform(curl.get());

        strReceive = QString::fromStdString(strCurlGet);
    }

    return strReceive;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值