Почему я получаю ошибку socket.gaierror с httplib? [закрыто]

Цель моей программы - отправить POST-запрос на страницу входа, но я получаю следующую ошибку.

#!/usr/bin/env python      
import httplib,urllib       
conn = httplib.HTTPConnection("localhost")   
conn.request("GET", "/xampp/mantisbt-1.2.2/login_page.php")  
r1 = conn.getresponse()  
print r1.status, r1.reason   
data1 = r1.read()  
params = urllib.urlencode({'Username': 'administrator', 'Password': 'password'})  
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/html"}  
conn = httplib.HTTPConnection("localhost/xampp/mantisbt-1.2.2/login.php")    
conn.request("POST","localhost/xampp/mantisbt-1.2.2/login.php",params, headers)  
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()

Вывод:

200 OK
Traceback (most recent call last):   
  File "./client_postnew.py", line 11, in <module>   
    conn.request("POST","localhost/xampp/mantisbt-1.2.2/login.php",params, headers)  
  File "/usr/lib/python2.6/httplib.py", line 910, in request      
    self._send_request(method, url, body, headers)      
  File "/usr/lib/python2.6/httplib.py", line 947, in _send_request   
    self.endheaders()    
  File "/usr/lib/python2.6/httplib.py", line 904, in endheaders    
    self._send_output()
  File "/usr/lib/python2.6/httplib.py", line 776, in _send_output     
    self.send(msg)
  File "/usr/lib/python2.6/httplib.py", line 735, in send
    self.connect()
  File "/usr/lib/python2.6/httplib.py", line 716, in connect          
    self.timeout)   
  File "/usr/lib/python2.6/socket.py", line 500, in create_connection    
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):   
socket.gaierror: [Errno -2] Name or service not known
1
задан 29 March 2016 в 08:28

1 ответ

Строки 10 и 11 вашего скрипта:

conn = httplib.HTTPConnection("localhost/xampp/mantisbt-1.2.2/login.php")
conn.request("POST","localhost/xampp/mantisbt-1.2.2/login.php",params, headers)

Вы создаете объект HTTPConnection с неверными аргументами: посмотрите документацию , подпись is:

class httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]])

HTTPConnection принимает имя хоста, HTTPConnection.request () выбирает путь. Поэтому вы должны написать:

conn = httplib.HTTPConnection("localhost")
conn.request("POST","localhost/xampp/mantisbt-1.2.2/login.php",params, headers)
0
ответ дан 29 March 2016 в 08:28

Другие вопросы по тегам:

Похожие вопросы: