libcurl post 发送 超过1M 数据量时会卡顿(延时)

原因:libcurl post 发送超过1024字节数据后,会多出一个步骤,即询问是否能发送超过1024数据的包。但postman没有这个询问步骤。

如果想忽略此步骤,可以设置"Expect”为空,即"Expect:"

// http POST  
CURLcode curl_post_req(const std::string &url, const std::string &postParams, std::string &response, std::string headflag, int timeout)
{
    // init curl  
    CURL *curl = curl_easy_init();
    // res code  
    CURLcode res;
    if (curl)
    {
        struct curl_slist *head = NULL;

        // set params  
        curl_easy_setopt(curl, CURLOPT_POST, 1); // post req  
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); // url  

        if (!headflag.empty())
        {
            head = curl_slist_append(head, headflag.c_str());
            curl_easy_setopt(curl, CURLOPT_HTTPHEADER, head);
        }

        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postParams.c_str()); // params  
        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);
        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, timeout);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
        // start req  
        res = curl_easy_perform(curl);

        if (!headflag.empty())
            curl_slist_free_all(head);
    }
    // release curl  
    curl_easy_cleanup(curl);
    return res;
}

 

调用:CURLcode res = curl_post_req("http://localhost:xxx/xxx/xxx.do", xxx, xxx, "Expect:", 120);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值