Invio di richieste POST con valori multipli per la stessa chiave con la libreria delle richieste
-
28-10-2019 - |
Domanda
Come faresti per inviare una richiesta con valori multipli con la stessa chiave?
r = requests.post('http://www.httpbin.org/post', data={1: [2, 3]})
print r.content
{ ... "form": { "1": "3" }, ... }
<”Modifica:
Hmm, molto strano.Ho provato a ripetere i dati del post utilizzando una semplice applicazione Flask e ottengo:
[('1', u'2'), ('1', u'3')]
È solo un difetto di httpbin.org?
Soluzione
Si scopre che requests
stava inviando i dati POST senza problemi.Era un problema all'estremità http://httpbin.org che causava l'appiattimento dei dati del modulo e più valori conla stessa chiave da ignorare.
Altri suggerimenti
Prova il MultiDict
di Werkzeug.È la stessa struttura utilizzata per questo scopo nelle applicazioni Flask.
import requests
from werkzeug.datastructures import MultiDict
data = MultiDict([('1', '2'), ('1', '3')])
r = requests.post('http://www.httpbin.org/post', data=data)
print(r.content)
Risultato:
...
"form": {
"1": [
"2",
"3"
]
},
...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow