Ich möchte einige Zeichenfolgen in einer Liste in einem POST-Aufruf senden. zB:
%Vor%Der Python-Code empfängt die Daten als eine einzelne Zeichenfolge (anstelle einer Liste von Zeichenfolgen). Wie poste ich es als eine Liste von Zeichenfolgen?
Es gibt keine "Liste von Zeichenfolgen" in einer URL (oder in praktisch allem in HTTP - wenn Sie mehrere Werte für dieselbe Kopfzeile angeben, werden sie in den meisten Web-App-Frameworks IME als einzelner Begrenzungswert ausgegeben) . Es ist nur eine einzige Saite. Ich schlage vor, dass Sie die Strings in irgendeiner Weise abgrenzen (z. B. durch Kommas getrennt) und dann am anderen Ende erneut auslesen.
Es hängt von Ihrem Server ab, die eingehenden Argumente zu formatieren. Zum Beispiel, wenn zope eine Anfrage wie folgt bekommt: Ссылка
Sie können die IDs als Liste erhalten. Aber diese Funktion hängt vom Server ab. Wenn Ihr Server keine Art von Parsing und Validierung Ihrer Eingabe unterstützt, müssen Sie es selbst implementieren. Oder du benutzt zope.
Wenn die große Zeichenfolge, die Sie empfangen, nur begrenzt ist, können Sie versuchen, sie zu trennen. Siehe Strings teilen .
Um klarzustellen, Sie erhalten die begrenzte Liste der Strings, teilen Sie diese Liste in eine Python-Liste, und voila !, Sie haben eine Python-Liste ...
Wenn Sie sie nicht einfach mit einem Komma trennen können oder wollen, und Sie möchten sie in einer Liste schicken. Ich habe eine Liste von Zahlen, die ich weitergeben möchte und ich benutze einen PHP-Webservice am anderen Ende, ich möchte meinen Webservice nicht neu aufbauen, da ich ein allgemeines Multiselect-Element verwendet habe, das Zend Framework zur Verfügung gestellt hat.
Dieses Beispiel funktioniert gut für mich und meine kleinen ganzen Zahlen und es würde mit Ihren Strings, ich wirklich nicht die urllib ausführen. Zitat (e), ich mache nur eine str (s).
Importieren Sie urllib
%Vor%Ihre Liste der Stiche:
%Vor%Verknüpfen Sie die Liste der Strings mit 'post_data [] =', auch urlencode die Zeichenfolge
%Vor%Beiträge zu Ссылка
%Vor%Daten, die an eine POST-Anweisung übergeben werden, werden (so weit ich das verstanden habe) als Schlüssel / Wert-Paare codiert, wobei die Anwendung / x-www-form-urlencoded encoding verwendet wird.
Also nehme ich an, dass Sie Ihre String-Liste als das folgende Dictionary darstellen:
%Vor%Dann ist es genauso schwierig, es als Argument an POST zu übergeben, als die Dokumentation von urllib zu lesen.
%Vor%Beachten Sie, dass Google für seine Suchanfragen kein POST verwendet, aber Sie werden den von Google gemeldeten Fehler sehen.
Wenn Sie WireShark beim Eingeben des obigen Codes ausführen, sehen Sie, dass die Daten des POST wie folgt übergeben werden:
%Vor% Eine Datenstruktur wie django.utils.datastructures.MultiValueDict
ist eine saubere Darstellung solche Daten. AFAIK bewahrt die Ordnung.
Django verwendet django.http.QueryDict
(Unterklasse von MultiValueDict
) um eine Abfragezeichenfolge in Python-Primitive und zurück zu verwandeln.
Sie sollten diese Klassen kopieren und in Ihrem Projekt verwenden können. (Ich habe jedoch nicht alle Abhängigkeiten überprüft)
Tags und Links python web-services