Seite 1 von 1

cgi parse error?

Verfasst: Freitag 3. November 2006, 08:59
von Costi
wenn ich cgi.parse_qs gebe, macht er scheinbar fehler, zumindestens kann ich mit den ergebniss nichts anfangen:

Code: Alles auswählen

cgi.parse_qs("""GET /foobar?from=raseh&to=ah&subject=atdj&Frage=strdj HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1) Gecko/20061010 Firefox/2.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/

""")
{'q': ['0.9,text/plain', '0.8,image/png,*/*', '0.5\nAccept-Language: de-de,de', '0.8,en-us', '0.5,en', '0.3\nAccept-Encoding: gzip,deflate\nAccept-Charset: ISO-8859-1,utf-8', '0.7,*', '0.7\nKeep-Alive: 300\nConnection: keep-alive\nReferer: http://127.0.0.1/\n\n'], 'to': ['ah'], 'GET /foobar?from': ['raseh'], 'Frage': ['strdj HTTP/1.1\nHost: 127.0.0.1\nUser-Agent: Mozilla/5.0 (Windows'], 'subject': ['atdj']}
>>> req = _
>>> req["Frage"]
['strdj HTTP/1.1\nHost: 127.0.0.1\nUser-Agent: Mozilla/5.0 (Windows']
>>> req["subject"]
['atdj']
oder muss ich http header anders parsen?


danke

Verfasst: Freitag 3. November 2006, 09:48
von BlackJack
Kann es sein, das da etwas fehlt? Ich kann weder `Frage` noch `subject` im Quelltext finden.

Und ja: header parst man nicht mit einer Funktion die laut Dokumentation einen URL kodierten "query string" erwartet.

`mimetools.Message` könnte man zum Beispiel verwenden um die Header zu parsen. Oder `cgi.parse_header()` für einzelne Zeilen.

Verfasst: Freitag 3. November 2006, 12:47
von Costi
Kann es sein, das da etwas fehlt?
ups, beim copy e paste ist mir da wohl etwas werrutscht


koentest du mir nicht (nur diesemal :D ) "worgekauten" code zeigen, ich krieg das irgendwie nicht hin :oops: :oops: :oops: :oops:

Verfasst: Freitag 3. November 2006, 12:56
von Zap
:shock: Wie schreibst'n du?! Hoffentlich ist das extra. (Sorry for Offtopic)

Wäre nicht schlecht wenn du das fehlende nachtragen könntest.

Verfasst: Freitag 3. November 2006, 14:14
von Costi
Wäre nicht schlecht wenn du das fehlende nachtragen könntest.
ok, habs genacht

Shocked Wie schreibst'n du?! Hoffentlich ist das extra.
leider nicht :cry:

Verfasst: Freitag 3. November 2006, 15:16
von BlackJack
Ich gehe jetzt erst einmal davon aus, dass Dich die Header gar nicht so sehr interessieren, sondern eher der "query" Teil von der URL in der ersten Zeile:

Code: Alles auswählen

In [50]: line = 'GET /foobar?from=raseh&to=ah&subject=atdj&Frage=strdj HTTP/1.1'
In [51]: url = line.split()[1]

In [52]: url
Out[52]: '/foobar?from=raseh&to=ah&subject=atdj&Frage=strdj'

In [53]: urlparse.urlsplit(url)
Out[53]: ('', '', '/foobar', 'from=raseh&to=ah&subject=atdj&Frage=strdj', '')

In [54]: query = urlparse.urlsplit(url)[3]

In [55]: cgi.parse_qs(query)
Out[55]: {'to': ['ah'], 'from': ['raseh'], 'Frage': ['strdj'], 'subject': ['atdj']}