2012-07-01 7 views
1

В php есть строки кода типа:Что такое pycurl.INFOTYPE_HEADER_OUT?

curl_setopt ($ ch, CURLINFO_HEADER_OUT, true);

Я не понимаю его точное значение; Я предполагаю, что это что-то, когда установлено значение true, означает, что вы получаете информацию заголовка вместе с ответом. Но он вызывается против установленных методов.

В библиотеке pycurl python ближайший я мог добраться до pycurl.INFOTYPE_HEADER_OUT. Но он бросает ошибку, когда я называю его против методов набора:

>>> c = pycurl.Curl() 
>>> c.setopt(pycurl.INFOTYPE_HEADER_OUT, 1) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
pycurl.error: (48, '') 
>>> c.getinfo(pycurl.INFOTYPE_HEADER_OUT) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid argument to getinfo 

Что такое правильное утверждение питон я должен ввести в этом случае?

ответ

1

Это не параметр, а флаг, который используется для отладки для печати исходных заголовков, которые отправляются из. Для этого вам необходимо определить функцию обратного вызова в качестве DEBUGFUNCTION, а затем обработать тип возвращаемого:

sent_headers = [] 
received_headers = [] 
def collect_headers(debug_type, debug_msg): 
    if debug_type == pycurl.INFOTYPE_HEADER_OUT: 
      sent_headers.append(debug_msg) 
    if debug_type == pycurl.INFOTYPE_HEADER_IN: 
      received_headers.append(debug_msg) 

# somewhere later in the code 

c = pycurl.Curl() 
c.setopt(pycurl.URL, 'http://www.google.com/') 
c.setopt(pycurl.DEBUGFUNCTION, collect_headers) 
c.perform() 

Вот соответствующие биты из documentation:

CURLOPT_DEBUGFUNCTION

Передайте указатель функция, которая соответствует следующему прототипу: int curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *); CURLOPT_DEBUGFUNCTION заменяет стандартную функцию отладки, используемую при действии CURLOPT_VERBOSE. Этот обратный вызов получает отладочную информацию , как указано аргументом curl_infotype. Эта функция должна возвращать 0. Данные, на которые указывает char *, переданный , эта функция НЕ будет завершена нулем, но будет точно соответствовать размеру , как сказано в аргументе size_t.

Доступные значения curl_infotype:

CURLINFO_TEXT

Данные информационный текст.

CURLINFO_HEADER_IN

Данные заголовка (или заголовок типа) данные, полученные от партнера.

CURLINFO_HEADER_OUT

Данные заголовка (или заголовок типа) данные, передаваемые на равных.

CURLINFO_DATA_IN

данные представляют собой данные протокола, полученные от партнера.

CURLINFO_DATA_OUT

данные представляют собой данные протокола, передаваемые через сокет.

0

Обнаружено, что pycurl имеет особый способ вызова, если вы не хотите, чтобы на экране был получен ответ perform().Check https://stackoverflow.com/a/2776815/145682

Я имею в виду, что это просто, как использовать pycurl. Его не совсем похоже на интерфейс curl php ...