python: ошибка httplib: невозможно отправить заголовки - PullRequest
3 голосов
/ 13 августа 2010
conn = httplib.HTTPConnection('thesite')
conn.request("GET","myurl")
conn.putheader('Connection','Keep-Alive')
#conn.putheader('User-Agent','Mozilla/5.0(Windows; u; windows NT 6.1;en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome//5.0.375.126 Safari//5.33.4')
#conn.putheader('Accept-Encoding','gzip,deflate,sdch')
#conn.putheader('Accept-Language','en-US,en;q=0.8')
#conn.putheader('Accept-Charset','ISO-8859-1,utf-8;1=0.7,*;q=0.3')
conn.endheaders()
r1= conn.getresponse()

Возникает ошибка:

  conn.putheader('Connection','Keep-Alive')
  File "D:\Program Files\python\lib\httplib.py", line 891, in putheader
    raise CannotSendHeader()

Если я закомментирую putheader и endheaders, все будет нормально. Но мне нужно, чтобы он оставался в живых.

Кто-нибудь знает, что я сделал не так?

Ответы [ 2 ]

8 голосов
/ 13 августа 2010

Используйте putrequest вместо request.Так как request также может отправлять заголовки, он отправит пустую строку на сервер, чтобы указать конец заголовков, поэтому отправка заголовков позже приведет к ошибке.

В качестве альтернативы, вы можете сделать, как это сделано здесь :

import httplib, urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
conn.request("POST", "/cgi-bin/query", params, headers)
response = conn.getresponse()
0 голосов
/ 19 июля 2016

headers = {"Content-Type": "application / x-www-form-urlencoded", "Соединение": "Keep-Alive", "Referer": "http://www.tu.sitio.cl/", «Агент пользователя»: «Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 51.0.2704.103 Safari / 537.36»};

код +

conn.request (method = "POST", url = "/ formulario /", body = params, headers = headers)

...