en utilisant le code suivant pour accéder à une URL avec un message.python - urrlib2 demande site https - obtenant l'erreur 400
je peux l'obtenir en utilisant wget et les éléments suivants: wget --post-data 'p_calling_proc = bwckschd.p_disp_dyn_sched & p_term = 201010' https://spectrumssb2.memphis.edu/pls/PROD/bwckgens.p_proc_term_date
pour une raison quelconque, je vais avoir un problème avec mon python texte dans la mesure où je reçois un code d'erreur de 400. (et bien sûr le navigateur fonctionne comme prévu)
toute pensée/commentaires/etc ...
le test python que j'ai:
// ==========================================
import urllib
import urllib2
import sys, string
import time
import mechanize
Request = urllib2.Request
urlopen = urllib2.urlopen
headers ={'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
query = "p_calling_proc%3Dbwckschd.p_disp_dyn_sched%26p_term%3D201010"
url1="https://spectrumssb2.memphis.edu/pls/PROD/bwckgens.p_proc_term_date"
req = Request(url1, query, headers)
test1=0
test=0
while test==0:
print "aaaaattttt \n"
try:
res = urlopen(req)
#req = Request(url1, query, headers)
print "aaaappppp \n"
#urllib2.URLError, (e)
#print e
except urllib2.HTTPError, e:
print "ffff1111 "+str(e.code)+"\n"
if e.code:
test1=1
print "error ..sleep \n"
time.sleep(1)
else:
test1=0
except urllib2.URLError, e:
print e.reason
#print "ffff3333 "+e.code+"\n"
if e.reason:
test1=1
print "error ..sleep \n"
time.sleep(1)
else:
test1=0
#print "ddd "+e.code +"\n"
#print e
if test1==0:
test=1
print "test1 = "+str(test1)+"\n"
#res = urlopen(req)
print "gggg 000000000000\n"
s = res.read()
.
des pensées/commentaires seraient appréciés ..
grâce
Il est simplement faux que "les données POST n'ont pas besoin d'être encodées car elles sont placées dans le corps de la requête HTTP". Le type de contenu des données de formulaire POSTed est 'application/x-www-form-urlencoded'. –
@Jonathan - c'est plutôt clair, hein? Merci, j'ai édité le post pour clarifier l'urlencoding, je pensais certainement tortueux. –
C'est bettah! Downvote annulé. :) –