【发布时间】:2017-12-08 23:52:35
【问题描述】:
使用 libcurl C++ 发送 POST 请求。我几乎尝试了所有组合,除了我想不出来的正确组合。
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE); /*Not Recommended to use but since certificates are not available this is a workaround added*/
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, FALSE); /*Not Recommended to use but since certificates are not available this is a workaround added*/
curl_easy_setopt(curl, CURLOPT_HTTPPOST, TRUE); //CURLOPT_POST does not work as well
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, sJson);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, bytesCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, bytesCallback);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &headBuffer);
sJson 是一个std::string,其主体由pb2json 创建。
我无法弄清楚为什么没有发送尸体? 如果 libcurl,我是否缺少一些 API,感谢任何线索!
【问题讨论】:
-
正文还是标题?
-
没有像服务器所说的那样发送正文
Received login request with no body -
HTTPPOST 发送多部分消息。你想要 CURLOPT_POST 代替。
-
即使
CURLOPT_POST也不起作用 -
看起来您也编写了自定义标题。我使用 CURLOPT_HTTPHEADER 设置自定义标题: curl_slist *header_list = ::curl_slist_append(nullptr, header.data()); ::curl_easy_setopt(m_curl_handle, CURLOPT_HTTPHEADER, header_list);