Ich verwende Python-Anfragen 2.2.1 und versuche, eine Anfrage mit einem benutzerdefinierten Header zu posten.Kann das Header-Feld von requests.post ein Unicode-Objekt sein?
ich meine eigenen Header erstellen, myheader
, wie folgt aus:
myheader = {'name' : myvalue }
Die Sache ist myvalue
ist ein Unicode-Objekt. Ich kodiere es nicht zu einer Byte-Zeichenkette, sondern setze es direkt in das myheader
Wörterbuch.
und wenn ich das tue:
r = requests.post(myhost, headers=myheader)
Ich erhalte eine Ausnahme:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 17-18: ordinal not in range(128)
Und ich denke, ich es bekommen konnte los, indem myvalue.encode('utf8')
tun, bevor es im header
Wörterbuch setzen - aber mein Frage ist, ist es dann illegal, ein Unicode-Objekt in den Header zu legen? Ich frage, weil die Antwort problemlos Unicode-Objekte enthalten kann, also warum kann ich keine in die Kopfzeile einfügen?
ist es ein Vorteil der Verwendung von 'email.header' über nur tun' someunicodevalue.encode ('UTF-8') '? – patchwork
@patchwork: Es ist standardkonform, dh es sollte mit * jedem * HTTP-Server funktionieren und nicht zurückgewiesen werden, da der Header nicht als Latin-1 decodiert werden kann. –
Ich habe einen Client, in Python mit Flask geschrieben, der die Anfrage empfängt. Aber wenn ich die Header mit der Flask-Definition einer HTTP-Anfrage abrufe, bekomme ich Unicode-Objekte. Kein großes Problem, aber verwirrend angesichts Ihrer Antwort (die ich akzeptiert habe) – patchwork