2015-08-06 2 views
0

Я использую расширение libcurl в C++. Я отправляю запрос на сервер elasticsearch, но результат «нет». Я перестроил запрос curl в PHP, и он сработал. Как я могу получить результат с веб-сервера?Libcurl запрос нет результата

CURL *curl; 
CURLcode res; 

std::stringstream ss_url; 
ss_url << "http://IP/newgame/player/2/_update"; 

char *post_url = const_cast<char*>(ss_url.str().c_str()); 


curl = curl_easy_init(); 
curl_easy_setopt(curl, CURLOPT_URL, post_url); 
curl_easy_setopt(curl, CURLOPT_PORT, 9200); 
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_easy_setopt(curl,CURLOPT_POSTFIELDS, '{ "doc": { "x": 555555, "y": 287273 }}'); 
res = curl_easy_perform(curl); 
curl_easy_cleanup(curl); 

EDIT:

Я попытался войти в локон ответ. Но файл пуст.

FILE *curllog = fopen("/home/elasticsearch_curl.log", "w+"); 
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curllog); 
+0

Проверьте заголовки о том, что сервер возвращает, и вы, вероятно, понять это. Конечно, это может быть перенаправление, и ваш код не просит libcurl следовать таким ... –

ответ

0

Проверьте, есть ли проблема с post_url, заменив его фактической строкой. в curl_set_opt из CURLOPT_URL

curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com");

Это может быть проблемой. Это работает для меня. включают это после curl_easy_perform для отладки и проверки.

if(res != CURLE_OK) { fprintf(stderr, "curl_easy_perform()failed:%s\n",curl_easy_strerror(res));}

Рабочая ПОЛУЧИТЬ Пример: https://gist.github.com/k3ut0i/737b6d19713ef5aa0a74

+0

Спасибо за помощь! Я уже пытаюсь заменить post_url на фактическую строку. Если я печатаю 'res', я получаю' null', если я печатаю 'curl_easy_strerror (res)' i get 'no error'. Но кажется, что запрос не будет отправлен. У вас есть идея, как я могу проверить, выйдет ли запрос? Как с «тестовым URL» или так. – Tobias

+0

@Tobias вы проверили, работает ли версия вашего сценария GET? print res не будет работать. проверить отредактированный ответ на строку ответа ответа – keutoi

+0

Спасибо! Он работает с вашим примером! – Tobias

Смежные вопросы