Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [python] Problema httprequest

    ciao!
    sto cercando di richiamare un file in remoto che mi da un risultato in formato JSON:
    codice:
    import httplib
    
    class Service(object):
    
        conn = None
    
        def __init__(self):
            self.conn = httplib.HTTPConnection("www.sito.it/service")
            
        def readRes(self):
            self.conn.request(method = 'GET', url = '/file.php', headers = { 'Content-Type': 'application/json' })
            res = self.conn.getresponse()
            print res.status, res.reason
            
    if __name__ == "__main__":
        s = Service()
        s.readRes()
    il file è raggiungibile tramite browser.
    solo che in fase di esecuzione mi viene dato questo errore:
    codice:
        for res in getaddrinfo(host, port, 0, SOCK_STREAM):
    socket.gaierror: [Errno 11004] getaddrinfo failed
    vi ho riportato solo l'ultimo pezzo.
    secondo voi da cosa dipende?

  2. #2
    ok ho trovato l'errore:
    codice:
    import httplib
    
    class Service(object):
    
        conn = None
    
        def __init__(self):
            self.conn = httplib.HTTPConnection("www.sito.it")
            
        def readRes(self):
            self.conn.request(method = 'GET', url = '/service/file.php', headers = { 'Content-Type': 'application/json' })
            res = self.conn.getresponse()
            print res.status, res.reason
            
    if __name__ == "__main__":
        s = Service()
        s.readRes()
    come url iniziale non vanno messe sottodirectory o altro, ma solo l'url principale.
    ciao!

  3. #3
    Il punto è che il parametro del costruttore di HTTPConnection non è "un pezzo di URL", ma il server al quale deve connettersi. In ogni caso, usando urllib2 e un oggetto Opener puoi lasciare che sia lui a smazzarsi i dettagli di smontare l'URL nelle sue varie componenti e agire di conseguenza.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    si ho visto bene nella doc.
    ho provato anche come dici te.

    in verità non saprei dirti se megli ouno o l'altro, mi sembrano uguali.
    alla fine mi viene sempre restituita una stringa json che devo cmq trasformare!

  5. #5
    Naturale che ti restituiscano la stessa cosa, semplicemente il secondo metodo in genere è un po' più semplice da usare (gli passi direttamente l'URL senza doverti preoccupare di spezzarlo in protocollo/server/percorso), tutto qui.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.