Hallo Leute,
ich möchte gerne mit der Funktion open_http("http://www.irgendwas.de") aus der Klasse URLopener eine http Verbindung herstellen. Ich stoße dabei aber immer auf folgende Fehlermeldung: "IOError: [Errno http error] no host given"
Benutzte ich aber die Funktion urllib.openurl("http://www.irgendwas.de") funktioniert alles problemlos.
Hat jemand ne Idee?
PS. Ich muss will nur deswegen den 1. Weg gehen weil die zweite Variante FancyURLopener bemüht, und die verschlückt unbekannte HTTP Errors einfach.
Wenn jemanden von euch ein anderer Weg einfällt wäre ich sehr dankbar...
Grüße,
MN.
Problem mit urllib
Hi mnietz, damit solltest du es eigentlich auch so schaffen:
Das öffnet die Seite "http://www.sol.at/fritz/ip.php" Inwiefern das Fehler berücksichtig, weiß ich nicht, aber rein über die httplib solltest du das auch schaffen, wenn du in der urllib auch nur eine http-verbinung herstellen willst.Dookie hat geschrieben:Code: Alles auswählen
import httplib conn = httplib.HTTPConnection("www.sol.at") #Verbindung zum Webserver herstellen conn.request("GET", "/fritz/ip.php") #die Seite "/fritz/ip.php" anfordern res = conn.getresponse() # Antwort vom Webserver holen if res.reason == "OK": # Seite existiert und ist erreichbar ipnummer = res.read() # ganze Seite lesen conn.close()
Was mir vor allem wichtig ist , das ich die Möglichkeit habe ggf. auf die http errorcodes zuzugreifen. Das heißt ich möchte jenachdem ob ein timeout auftritt oder die seite nicht verfügbar ist verzweigen können.
Welche Werte kann res denn in deinem Beispiel annehmen? Ich will irgendwie auslesen wenn z.b. http error 404 auftritt.
Vielen Dank,
mnietz
Welche Werte kann res denn in deinem Beispiel annehmen? Ich will irgendwie auslesen wenn z.b. http error 404 auftritt.
Vielen Dank,
mnietz
- strogon14
- User
- Beiträge: 58
- Registriert: Sonntag 23. Februar 2003, 19:34
- Wohnort: Köln
- Kontaktdaten:
Wie der Name der Methode open_http() schon sagt, ist sie dafür zuständig URLs über das HTTP Protokoll zu laden. Dann muss/darf höchstwahrscheinlich in der URL auch kein Schema mehr angegeben werden. Also statt 'http://host/path' nur 'host/path'.
Ich habe jetzt nicht in die Sourcen geschaut, aber die Dokumentation zu urllib, insbes. zur Methode open() des URLopener Objekts scheint mir sehr darauf hinzudeuten:
http://www.python.org/doc/current/lib/u ... -objs.html
Probiers's einfach mal ohne das 'http://' aus!
Ich habe jetzt nicht in die Sourcen geschaut, aber die Dokumentation zu urllib, insbes. zur Methode open() des URLopener Objekts scheint mir sehr darauf hinzudeuten:
http://www.python.org/doc/current/lib/u ... -objs.html
Probiers's einfach mal ohne das 'http://' aus!
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi mnietz,
hier sind ein paar Beispiele:
http://www.python.org/doc/current/lib/h ... mples.html
Gruß
Dookie
hier sind ein paar Beispiele:
http://www.python.org/doc/current/lib/h ... mples.html
Gruß
Dookie
Vielen Dank euch, mit der httplib funktionierts auf jeden fall. Mit der urllib.open_http läufts auch mit open_http("www.heise.de") nicht. Komisch, aber mit der anderen Lösung bin ich sehr zufrieden.
Hab gestern das erste Mal was mit Python gemacht und bin schon begeistert - auch dank eurer Unterstützung
Hab gestern das erste Mal was mit Python gemacht und bin schon begeistert - auch dank eurer Unterstützung