C ++ cURL "пустой ответ от сервера" каждый раз - PullRequest
2 голосов
/ 09 мая 2011

Я пытаюсь написать программу на C ++ для чтения с веб-сайта с использованием cURL.Я начал с использования кода из примера cURL simple.c.Если я использую этот код точно, независимо от того, к какому URL я пытаюсь получить доступ, я получаю ошибку # 52: «пустой ответ с сервера».Это для любого URL, который я пытаюсь.Если я использую cURL из командной строки, кажется, что он работает нормально.

Подробный ответ моей программы:

*About to connect() to www.google.com port 80 (#0)
* Trying 74.125.91.99...* connected
*connected to www.google.com (74.125.91.99) port 80 (#0)
>GET / HTTP/1.1
Host: www.google.com
Accept: */*

* Empty reply from server
* Connection #0 to host www.google.com left intact
* server returned nothing (no headers, no data)
*Closing connection #0

Код:

CURL *curl; 
CURLcode res;

curl = curl_easy_init(); 
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com"); 
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl); 

Ответы [ 2 ]

5 голосов
/ 12 июня 2014

Я потерял пару часов, отлаживая пустой ответ от curl, поэтому я делюсь здесь, чтобы, надеюсь, не допустить того, чтобы то же самое произошло с другими.

Я заметил, что вызовы OPTIONS были возвращены с "Пустым ответом отсервер "ошибка как в браузере, так и из curl на моей машине, но нормально работал от коллеги.Когда я пытался подключиться к порту 80 на веб-сервере, соединение сразу же закрывалось, как только я нажимал клавишу ВВОД после ввода строки «OPTIONS / path / to / resource HTTP / 1.1».Выполнив команду «lsof -i | grep telnet» (с открытым сеансом telnet перед вводом строки OPTIONS), я увидел, что мой сеанс telnet был для чего-то локального, а НЕ для сервера, который я указал.Я знал, что-то действительно странное происходило тогда.Оказывается, это потому, что у меня было установлено программное обеспечение Cisco AnyConnect VPN.VPN не нужно запускать - достаточно было просто установить ее, чтобы перехватить мой трафик.Насти.Немного погуглил эту страницу, которая больше говорит о проблеме:

http://www.bennadel.com/blog/2559-cisco-anyconnect-vpn-client-may-block-cors-ajax-options-requests.htm

Итак, короткая история такова: это может быть не сервер ... что-то локальное может перехватыватьи блокирование вашего сетевого трафика.

5 голосов
/ 11 мая 2011

«Пустой ответ от сервера» означает, что libcurl не получил любой ответ от сервера после того, как он отправил свой запрос. В HTTP каждый запрос всегда возвращает что-то обратно, поэтому он даже не отвечает HTTP и, следовательно, является довольно серьезной ошибкой.

Вы используете очень старый libcurl, поэтому, возможно, вы столкнулись с ошибкой, существовавшей тогда.

Другими возможными причинами этого является то, что что-то в вашей сети / настройке мешает этому работать, например брандмауэр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...