![](/img/trans.png)
[英]Php exntension: undefined symbol: curl_easy_setopt in Unknown on line 0
[英]libcurl curl_easy_setopt “Unknown error”
我正在嘗試使用C ++ cURL庫通過PUT方法發送Json數據,我的代碼看起來像這樣
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
我先調用function1,然后調用function2,問題是對於所有curl_easy_setopt
調用,我都收到錯誤代碼1685083487和錯誤描述“未知錯誤”。 那么什么可能導致這種結果以及如何解決呢?
先感謝您!
我會改用CURLOPT_POSTFIELDS,我的函數是這樣的
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.";
}
}
}
}
並像poolStr(data,mHost)一樣調用;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.