Comment faire une requête HTTP Python avec des données POST et des cookies?
Je suis en train de faire un POST de HTTP à l'aide de cookies en Python.
J'ai des valeurs de l'URL, les données POST et cookie.
import urllib2
url="http://localhost/testing/posting.php"
data="subject=Alice-subject&addbbcode18=%23444444&addbbcode20=0&helpbox=Close+all+open+bbCode+tags&message=alice-body&poll_title=&add_poll_option_text=&poll_length=&mode=newtopic&sid=5b2e663a3d724cc873053e7ca0f59bd0&f=1&post=Submit"
cookie = "phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%223%22%3B%7D; phpbb2mysql_t=a%3A9%3A%7Bi%3A3%3Bi%3A1330156986%3Bi%3A1%3Bi%3A1330160737%3Bi%3A5%3Bi%3A1330161702%3Bi%3A6%3Bi%3A1330179284%3Bi%3A2%3Bi%3A1330160743%3Bi%3A7%3Bi%3A1330163187%3Bi%3A8%3Bi%3A1330164442%3Bi%3A9%3Bi%3A1330164739%3Bi%3A10%3Bi%3A1330176335%3B%7D; phpbb2mysql_sid=5b2e663a3d724cc873053e7ca0f59bd0"
#creating HTTP Req
req = urllib2.Request(url,data,cookie)
f = urllib2.urlopen(req)
print f.read()
Cependant, si j'essaie d'exécuter le programme, c'est de lancer une erreur:
Traceback (most recent call last):
File "task-4.py", line 7, in <module>
req = urllib2.Request(url,data,cookie)
File "/usr/lib/python2.6/urllib2.py", line 197, in __init__
for key, value in headers.items():
AttributeError: 'str' object has no attribute 'items'
J'ai deux questions:
1. Est ma requête HTTP POST adéquat? (J'ai bien été en mesure d'exécuter la même chose en Java et j'ai obtenu une réponse HTTP 200 avec un post de phpBB, cependant, je suis nouveau sur Python)
2. Quelqu'un peut-il me montrer un exemple jouet de manipulation HTTP POST avec publier des données et des cookies?
Merci d'avance,
Roy
source d'informationauteur user916315
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer demandesce qui rend la vie plus facile lorsque vous traitez avec des requêtes HTTP.
http://python-requests.org/
le 3ème argument que vous transmettre est un en-tête et doit être un dictionnaire. Cela devrait le faire
J'aime httplib:
cookie
chaîne vous a donné. Essayez d'utiliser: