//在数据头设置  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;
}