Conversion de curl en requêtes python
Je suis en train de convertir la suite de la demande de fonctionnement en roulage à un python demande (à l'aide de la Demande http://docs.python-requests.org/en/v0.10.7/).
curl --data 'query={"tags":["test1","test2"]}' http://www.test.com/match
(à noter que j'ai utilisé une fausse url mais la commande ne fonctionne pas avec l'url réelle)
L'extrémité de réception (ran dans le Flacon), fait ceci:
@app.route("/match", methods=['POST'])
def tagmatch():
query = json.loads(request.form['query'])
tags = query.get('tags')
... does stuff ...
return json.dump(stuff)
En boucle (7.30), a couru sur Mac OS X (10.9) la commande ci-dessus correctement renvoie un json liste filtrée à l'aide de la balise de la requête.
Mon script python est comme suit, elle renvoie un 400 bad request.
import requests
payload = {"tags":["test1", "test2"]}
# also tried payload = 'query={"tags":["test1","test2"]}'
url = 'http://www.test.com/match'
r = requests.post(url, data=payload)
if __name__=='__main__':
print r.text
Je sens que je suis absent quelque chose de petit et de toute aide serait appréciée.
Merci
source d'informationauteur zalc
Vous devez vous connecter pour publier un commentaire.
Votre serveur attend JSON, mais vous n'êtes pas à l'envoyer. Essayez ceci:
Il y a un magnifique open source cURL Python Demandes de conversion d'aide à http://curl.trillworks.com. Il n'est pas parfait, mais permet beaucoup de temps. En particulier pour la conversion de Chrome "Copier en tant que cURL" des commandes. Il y a aussi un le nœud de la bibliothèque si vous avez besoin de faire des conversions par programme
J'ai écrit un client HTTP plugin pour Sublime Text appelé Demandeuret l'une de ses caractéristiques est de convertir les appels à roulage à des Demandes, et vice-versa.
Si vous utilisez Sublime Texte, c'est probablement votre le plus rapide, la plus facile. Si non, voici le code qui gère en fait la conversion de cURL à la Demande. Il est basé déroulermais avec diverses améliorations et corrections de bugs.
Vous pourriez faire un script avec ce code, par exemple
curl_to_request.py
et d'appeler ce script à partir de la ligne de commande comme. Il va travailler pour Python 2 et Python 3.essayez ceci:
https://github.com/spulec/uncurl
À partir de votre code à l'aide de
requests
et dans le Flacon, il semble que vous ne publiez pas le droit de format de données. Le charge utile devrait ressembler à ceci:Cela ne semble pas normal que la poste, les données lors de l'utilisation de
requests.post()
. Donc, si vous avez validé le formulaire html ici, il peut avoir été plus clair pour résoudre le problème.Voici une autre question similaire: À l'aide de Python Demande de passer par un login/mot de passe