cgi parse error?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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
Zuletzt geändert von Costi am Freitag 3. November 2006, 14:12, insgesamt 2-mal geändert.
cp != mv
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.
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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:
cp != mv
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

:shock: Wie schreibst'n du?! Hoffentlich ist das extra. (Sorry for Offtopic)

Wäre nicht schlecht wenn du das fehlende nachtragen könntest.
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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:
cp != mv
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']}
Antworten