基本上,我只是想在我的 C 應用程式上使用 libcurl 運行這個 curl 命令。
curl http://127.0.0.1:8384/rest/events -H "X-API-Key: WuCS7KQtyoRxbWDZ4zsSbjUdU4T"
該命令在命令提示符下作業得很好。但是當我嘗試將它與 libcurl 一起使用時,我不斷收到 400 Bad Request: invalid header name 錯誤。我瀏覽了其他一些類似的執行緒,但找不到解決方案。我現在真是無所適從。:( 間距和語法看起來不錯.... 感謝您的幫助。
這是代碼:
static size_t my_write( void* buffer, size_t size, size_t nmemb, void* param )
{
std::string& text = *static_cast< std::string* >( param );
size_t totalsize = size * nmemb;
text.append( static_cast< char* >( buffer ), totalsize );
return totalsize;
}
int main()
{
std::string result;
CURL* curl;
CURLcode res;
curl_global_init( CURL_GLOBAL_DEFAULT );
curl = curl_easy_init();
if ( curl )
{
curl_easy_setopt( curl, CURLOPT_URL, "http://127.0.0.1:8384/rest/events" );
curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, my_write );
curl_easy_setopt( curl, CURLOPT_WRITEDATA, &result );
curl_easy_setopt( curl, CURLOPT_VERBOSE, 1L );
struct curl_slist *header = NULL;
header = curl_slist_append( header, "-H \"X-API-Key: WuCS7KQtyoRxbWDZ4zsSbjUdU4T\"" );
curl_easy_setopt( curl, CURLOPT_HTTPHEADER, header );
res = curl_easy_perform( curl );
curl_easy_cleanup( curl );
}
curl_global_cleanup();
std::cout << result << "\n\n";
}
uj5u.com熱心網友回復:
-H呼叫時不要包含開關curl_slist_append()。該開關僅適用于命令列curl.exe應用程式。它告訴應用程式應該將以下資料傳遞給curl_slist_append().
改用這個:
curl_slist *header = curl_slist_append(NULL, "X-API-Key: WuCS7KQtyoRxbWDZ4zsSbjUdU4T");
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321171.html
