1
私は関数に共有されたVisual C++カールポインタでcURLを使用しています。 setData関数はサーバーに送信されますが、機能はありません。なぜそのような問題がありますか?cURLポストフィールドは特殊な文字でエンコードされています
出典:
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
void setData(CURL *curl) // bad working (encoded sent fields...)
{
string fields = "{\"daa\": \"a\"}";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, fields.c_str());
}
void setUrl(CURL* curl) // good working
{
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
}
int main()
{
CURL *curl;
CURLcode res;
string readBuffer;
curl = curl_easy_init();
struct curl_slist *list = NULL;
list = curl_slist_append(list, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
setUrl(curl);
setData(curl);
res = curl_easy_perform(curl);
cout << readBuffer;
getchar();
return 0;
}
を所有しているが、ライブラリとしてこれを使用しないでください。しかし、マニュアルページをチェックするだけです。あなたは 'CURLOPT_POSTFIELDS'の代わりに' CURLOPT_COPYPOSTFIELDS 'を試しましたか? – infixed
さらに、このマニュアルでは、CURLOPT_POSTFIELDSIZEセッターが必要になるかもしれません。しかし、それはゼロ終了c_str – infixed
あなたのソリューションが今すぐ動作しようとしたので、多分ではない。ありがとうございました。 –