美文网首页
libcurl使用需要注意的问题

libcurl使用需要注意的问题

作者: 豪爵吸金ing | 来源:发表于2021-09-27 20:25 被阅读0次

今天遇到一个问题,libcurl进行post请求,发现回传的数据少了一部分,导致服务回传的json数据不完整。

bug修复前

inline size_t callBackFun_(void *buffer, size_t size, size_t nmemb, void *userp)
{
    static int current_index = 0;
    int content_size = nmemb * size; 
    std::string result = std::string((char *)buffer, content_size);
    LOG_DEBUG("------content_size---------" << content_size);
    LOG_INFO(result);
    return content_size;
}

void postImpl(){
    curl_global_init(CURL_GLOBAL_ALL);
    CURL *curl = curl_easy_init();     
    curl_easy_setopt(curl, CURLOPT_POST, 1);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callBackFun_);
} 

上面代码发现,post请求后频繁出现打印的log, json数据不完整, 导致解析失败。

bug修复后

std::string global_result};  // 注意这里

//下面回调 json太长 会进入多次
inline size_t callBackFun_(void *buffer, size_t size, size_t nmemb, void *userp)
{
    static int current_index = 0;
    int content_size = nmemb * size; 
    std::string result = std::string((char *)buffer, content_size);
    LOG_DEBUG("------content_size---------" << content_size);
    global_result.append(result);    
    return content_size;
}

void postImpl(){
    global_result.clear();
    curl_global_init(CURL_GLOBAL_ALL);
    CURL *curl = curl_easy_init();     
    curl_easy_setopt(curl, CURLOPT_POST, 1);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callBackFun_);
    LOG_INFO(global_result);
} 

以上是今天遇到的一个奇怪问题的解决方案。

相关文章

  • libcurl使用需要注意的问题

    今天遇到一个问题,libcurl进行post请求,发现回传的数据少了一部分,导致服务回传的json数据不完整。 b...

  • 静态编译Curl

    分别运行以下命令: 注意:需要apt-get install curl libcurl3 libcurl3-dev

  • 基于libcurl下载文件

    Linux 上使用libcurl下载http文件。 需要安装libcur 编译:

  • Ceph RGW: libcurl用法介绍

    libcurl使用 使用libcurl访问外部http时的一个基本流程: 解析Ceph中进行libcurl请求的实...

  • pycurl.so: undefined symbol 解决方法

    使用yum install 包时出现的undefined symbol问题: 看静态链接库的情况: libcurl...

  • Ajax调用Web Api Post

    使用Ajax调用Web Api Post需要注意的问题如下。 首先是跨域访问的问题,需要在Api端设置: 注意需要...

  • libcurl使用介绍

    目录 参考 curl介绍 libcurl-easy的API介绍 注意事项 1. 参考 [1] curl官网/cur...

  • libcurl 编译,使用

    libcurl 编译,使用 到官网下载最新源码,编译成库 工程中使用 工程中编译链接 链接时加参数:尝试加入这些依...

  • libcurl的简单使用

    libcurl 是一个优秀的网络请求库,支持多种协议, 多平台, 这里我们就现简述一下http协议的使用 准备 本...

  • 方案|解决git gnutls_handshake失败

    电脑不知道为什么不能git clone,报错: 查了下需要使用libcurl4-openssl-dev替换gnut...

网友评论

      本文标题:libcurl使用需要注意的问题

      本文链接:https://www.haomeiwen.com/subject/bosknltx.html