libcurl curl“轻松设置”;未知错误“; 我试图用C++ CURL库通过PUT方法发送JSON数据,我的代码看起来像这样的< /P> CURL* m_curlHandle; CURLcode m_returnValue; //function1 start curl_global_init(CURL_GLOBAL_ALL); struct curl_slist* headers = NULL; std::ostringstream oss; struct curl_slist* slist = NULL; slist = curl_slist_append(headers, "Accept: application/json"); slist = curl_slist_append(headers, "Content-Type: application/json"); slist = curl_slist_append(headers, "charsets: utf-8"); m_curlHandle = curl_easy_init(); if (!m_curlHandle) // throw exception curl_easy_setopt(m_curlHandle, CURLOPT_HTTPHEADER, headers); //function1 end //function2 start std::string url = "some URL"; // my url curl_easy_setopt(m_curlHandle, CURLOPT_URL, url.c_str()); unsigned int timeout = 5; curl_easy_setopt(m_curlHandle, CURLOPT_TIMEOUT, timeout); std::string localIp = "some IP"; // my IP address curl_easy_setopt(m_curlHandle, CURLOPT_INTERFACE, localIp.c_str()); curl_easy_setopt(m_curlHandle, CURLOPT_CUSTOMREQUEST, "PUT"); std::string json = "some json struct"; //my json struct curl_easy_setopt(m_curlHandle, CURLOPT_POSTFIELDS, json.c_str()); curl_easy_setopt(m_curlHandle, CURLOPT_WRITEFUNCTION, callbackWriter); //static size_t callbackWriter(char* buffer, size_t size, size_t nmemb, void* userp); m_returnValue = curl_easy_perform(m_curlHandle); //function2 end

libcurl curl“轻松设置”;未知错误“; 我试图用C++ CURL库通过PUT方法发送JSON数据,我的代码看起来像这样的< /P> CURL* m_curlHandle; CURLcode m_returnValue; //function1 start curl_global_init(CURL_GLOBAL_ALL); struct curl_slist* headers = NULL; std::ostringstream oss; struct curl_slist* slist = NULL; slist = curl_slist_append(headers, "Accept: application/json"); slist = curl_slist_append(headers, "Content-Type: application/json"); slist = curl_slist_append(headers, "charsets: utf-8"); m_curlHandle = curl_easy_init(); if (!m_curlHandle) // throw exception curl_easy_setopt(m_curlHandle, CURLOPT_HTTPHEADER, headers); //function1 end //function2 start std::string url = "some URL"; // my url curl_easy_setopt(m_curlHandle, CURLOPT_URL, url.c_str()); unsigned int timeout = 5; curl_easy_setopt(m_curlHandle, CURLOPT_TIMEOUT, timeout); std::string localIp = "some IP"; // my IP address curl_easy_setopt(m_curlHandle, CURLOPT_INTERFACE, localIp.c_str()); curl_easy_setopt(m_curlHandle, CURLOPT_CUSTOMREQUEST, "PUT"); std::string json = "some json struct"; //my json struct curl_easy_setopt(m_curlHandle, CURLOPT_POSTFIELDS, json.c_str()); curl_easy_setopt(m_curlHandle, CURLOPT_WRITEFUNCTION, callbackWriter); //static size_t callbackWriter(char* buffer, size_t size, size_t nmemb, void* userp); m_returnValue = curl_easy_perform(m_curlHandle); //function2 end,c++,c,curl,libcurl,C++,C,Curl,Libcurl,我先调用function1,然后调用function2,问题是对于所有curl\u easy\u setopt调用,我都会得到错误代码1685083487和错误描述“未知错误”。那么,是什么导致了这样的结果?如何解决这个问题 提前谢谢你 我会改用CURLOPT_POSTFIELDS,我的func是这样的 void poolStr(const std::vector<unsigned char> &data, const std::string &url) { curl

我先调用function1,然后调用function2,问题是对于所有
curl\u easy\u setopt
调用,我都会得到错误代码1685083487和错误描述“未知错误”。那么,是什么导致了这样的结果?如何解决这个问题


提前谢谢你

我会改用CURLOPT_POSTFIELDS,我的func是这样的

void poolStr(const std::vector<unsigned char> &data, const std::string &url)
{
curl_global_init(CURL_GLOBAL_DEFAULT);
mCurl = curl_easy_init();
if(mCurl) 
{

        curl_easy_setopt(mCurl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(mCurl, CURLOPT_POST, 1L);
        curl_easy_setopt(mCurl, CURLOPT_POSTFIELDSIZE, data.size());
        curl_easy_setopt(mCurl, CURLOPT_POSTFIELDS, &data[0]);
        mChunk = curl_slist_append(mChunk, "Content-Type: application/binary");
        mChunk = curl_slist_append(mChunk, "Expect:");
        curl_easy_setopt(mCurl, CURLOPT_HTTPHEADER, mChunk);

        CURLcode res = curl_easy_perform(mCurl);
        if(res != CURLE_OK)
        {
            LOGERROR << "curl_easy_perform() failed: " << curl_easy_strerror(res) << "\n Attepmt number: " << attempt;
        }
        else
        {
            LOGINFO << "Data being sent.";
        }
    }
}
}
void poolStr(const std::vector&data,const std::string&url)
{
curl\u global\u init(curl\u global\u默认值);
mCurl=curl_easy_init();
如果(mCurl)
{
curl_easy_setopt(mCurl,CURLOPT_URL,URL.c_str());
卷曲设置(mCurl,卷曲设置,1L);
curl_easy_setopt(mCurl,CURLOPT_POSTFIELDSIZE,data.size());
curl_easy_setopt(mCurl、CURLOPT_POSTFIELDS和data[0]);
mChunk=curl\u slist\u append(mChunk,“内容类型:应用程序/二进制”);
mChunk=curl\u slist\u append(mChunk,“Expect:”);
curl_easy_setopt(mCurl、CURLOPT_HTTPHEADER、mChunk);
CURLcode res=curl\u easy\u perform(mCurl);
如果(res!=卷曲(OK)
{

LOGERROR,但
curl\u easy\u setopt(mCurl,CURLOPT\u URL,URL.c\u str())
还返回1685083487代码,在
CURLOPT_POSTFIELDS
之前。仅从成员变量名称判断,这是包装器对象的成员函数。如果所述对象通过值传递或以其他方式隐式或显式复制,并且没有正确管理复制语义,并且您的中断程序关闭
m_curlHandle
,则任何按值复制将保留一个无效的
m\u curlHandle
。尝试使用它将失败。我的建议是:将类复制ctor声明为已删除,重新编译并修复任何中断。@WhozCraig您是对的,这些是包装类的成员函数,但它是单例,因此该类只有一个对象。