Ich versuche, eine mehrteilige / verwandte Nachricht mit Anfragen in Python zu senden. Das Skript scheint einfach genug zu sein, mit der Ausnahme, dass Anfragen nur das Senden von mehrteiligen / Formulardaten ermöglichen, obwohl ihre Dokumentation dies nicht eindeutig auf die eine oder andere Art angibt.
Mein Anwendungsfall ist das Senden von Soap mit Anhängen. Ich kann ein Wörterbuch mit den zwei Dateien bereitstellen, deren Inhalt eine Test-Soap-Nachricht ist, und ein Testdokument, das ich zu senden versuche. Die erste enthält die Soap-Nachricht mit allen Anweisungen, die zweite ist das eigentliche Dokument.
Wenn ich jedoch keinen Header-Wert angegeben habe, scheint nur bei Verwendung der Option files die Option multipart / form-data zu verwenden. Aber wenn ich Header vorschlage, um einen anderen Multipart-Typ zu spezifizieren, scheint Requests die Mime-Boundary-Information nicht hinzuzufügen.
%Vor%Gibt es eine Möglichkeit, dies mithilfe von Anfragen zu erledigen? Oder gibt es ein anderes Werkzeug, das ich betrachten sollte?
Sie müssen die MIME-Codierung selbst erstellen. Sie können dies mit dem Paket email.mime
tun:
Ich nahm an, dass die XML-Datei UTF-8 verwendet, wahrscheinlich möchten Sie auch einen Zeichensatz für den Eintrag document
festlegen.
requests
kann nur multipart/form-data
post bodies erstellen; Das multipart/related
wird nicht häufig verwendet.
Ich arbeite mit requests
und dem Google Drive API "Multipart" Upload.
Die email.mime
-Lösung funktionierte nicht mit der API von Google. Daher habe ich in den Quellcode requests
geforscht, um zu sehen, wie er multipart/form-data
bodies implementiert.
requests
verwendet den Helfer urllib3.filepost.encode_multipart_formdata()
, der umbrochen werden kann, um multipart/related
:
Nun können wir mit encode_multipart_related()
ein (body, content_type)
Tupel erstellen, das den Anforderungen von Google entspricht:
Hier sehen Sie ein vollständiges Beispiel, das unsere encode_media_related()
verwendet, um eine Hallo-Welt-Datei mit der google_auth
-Bibliothek auf Google Drive hochzuladen.
Tags und Links python python-requests mime multipart