Por que estou obtendo o socket.gaierror com o httplib? [fechadas]

1

O objetivo do meu programa é enviar uma solicitação de POST para a página de login, mas estou recebendo o seguinte erro.

#!/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()

Saída:

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
    
por Naive 23.09.2013 / 10:34

1 resposta

1

Linhas 10 e 11 do seu script:

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

Você está criando um objeto HTTPConnection com os argumentos errados: veja a documentação , a assinatura é:

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

HTTPConnection aceita o nome do host, HTTPConnection.request () assume o caminho. Portanto, você deve escrever:

conn = httplib.HTTPConnection("localhost")
conn.request("POST","localhost/xampp/mantisbt-1.2.2/login.php",params, headers)
    
por Andrea Corbellini 23.09.2013 / 11:01