• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

技术天地

C++用curl库字节流方式以输送https同步Req

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/2019/0915/642.html

 
 //在常州平台运营数据头设置  Content-Type application/octet-stream 否则可能会默许由于有字符 & 形成无法正确传输;
 
    // 设置音讯头
    curl_slist *header = NULL;
    header = curl_slist_append(header, "Content-Type:application/octet-stream" );
最后记得
 
curl_slist_free_all(header);
以下是运用流程
 
 //回调函数
void write_func(char *ptr,size_t size,size_t nmemb,void *userdata)        
{
    std::string& buffer = *(std::string*)userdata;
    size_t len = size*nmemb;
    for(size_t i = 0;i<len;++i)
    {
        buffer += *ptr;
        ++ptr;
    }
}
// https 恳求
int  https_post_test(const char* strUrl,uint8_t * szPost,int dataSize,const char * pCaPath)
{
    int ret = -1;
    CURL * curl=NULL;
    CURLcode res;
    std::string res_buf = "";
    // 设置音讯头
    curl_slist *header = NULL;
    header = curl_slist_append( m_header, "Content-Type:application/octet-stream" );
    curl = curl_easy_init();  //初始化
    if(curl&&strUrl)
    {
        curl_easy_setopt(curl,CURLOPT_URL,strUrl);             //设置常州微信公众平台url地址
curl_easy_setopt( curl, CURLOPT_HTTPHEADER, header ); // Header
        curl_easy_setopt( curl, CURLOPT_REFERER, "nginx" );
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
        if(szPost)
        {
            curl_easy_setopt(curl,CURLOPT_POSTFIELDS, szPost); // POST 的数据内容
            curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, dataSize); // POST的数据长度 
        }
        curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
        curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_func);  //设置回调函数
        curl_easy_setopt(curl,CURLOPT_WRITEDATA,&res_buf);        //设置写数据
        char error[1024];
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
        //接纳数据时超时设置,假如2秒内数据未接纳完,直接退出
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 2);
        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2);
         if(NULL == pCaPath)
         {
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);//设定常州微信小程序开发为不考证证书和HOST
             curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
         }
         else
         {
             curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
             curl_easy_setopt(curl, CURLOPT_CAINFO, pCaPath);
         }
        res = curl_easy_perform(curl);                           //执行
        if(res == CURLE_OK)
        {
        } else
        {
            LOGE(TAG,"curl error %d",res);
            ret = -1;
        }
        curl_easy_cleanup(curl);
curl_slist_free_all(header);
    } else
    {
        ret =-1;
    }
    return ret;
}

上篇:上一篇:c++运用curl库发送https
下篇:下一篇:织梦dedecms文章页加转载链接的办法