Python URLLib / URLLib2 POST
Je suis en train de créer un super simpliste Virtuel Dans /Conseil à l'aide de wx/Python. J'ai le code suivant à la place de l'un de mes demandes vers le serveur où je vais stocker les données:
data = urllib.urlencode({'q': 'Status'})
u = urllib2.urlopen('http://myserver/inout-tracker', data)
for line in u.readlines():
print line
Rien de spécial se passe là-bas. Le problème que je vais avoir, c'est que, basé sur la façon dont j'ai lu les docs, cela devrait effectuer une Requête Post parce que j'ai fourni le paramètre de données et qui n'est pas le cas. J'ai ce code dans l'indice de cette url:
if (!isset($_POST['q'])) { die ('No action specified'); }
echo $_POST['q'];
Et chaque fois que je lance mon Application Python-je obtenir le "Non spécifiée" texte imprimé dans ma console. Je vais essayer de la mettre en œuvre à l'aide de la Demande des Objets que j'en ai vu quelques démos qui sont celles, mais je me demandais si quelqu'un peut m'aider à expliquer pourquoi je ne suis pas une Requête Post avec ce code. Merci!
-- ÉDITÉ --
Ce code fonctionne et Posts sur ma page web correctement:
data = urllib.urlencode({'q': 'Status'})
h = httplib.HTTPConnection('myserver:8080')
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
h.request('POST', '/inout-tracker/index.php', data, headers)
r = h.getresponse()
print r.read()
Je suis toujours pas sûr pourquoi, la urllib2 bibliothèque ne pas Poster quand je fournir les données de paramètre pour moi les docs indiquer qu'il doit.
- Pourquoi n'êtes-vous pas à l'aide de
urllib2
? - Je suis.
urllib2.urlopen
. Je suis seulement en utilisant urllib pour encoder les données post.
Vous devez vous connecter pour publier un commentaire.
Utilisant le chemin d'accès
/inout-tracker
sans une fuite/
ne pas chercherindex.php
. Au lieu de cela, le serveur émet un302
rediriger vers la version avec la fuite/
.Faire un 302 causent habituellement des clients pour convertir un POST à une requête GET.