Question

import urllib
import urllib2
from urllib2 import Request

url = 'https://www.google.com'
response = urllib2.urlopen(url)

login_url = (url + '/login')
data = {'email': 'john',
        'password': 'example'}
req = Request(login_url, urllib.urlencode(data))
response = urllib2.urlopen(req)


  File "test.py", line 50, in <module>
    response = urllib2.urlopen(req)
  File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
  urllib2.HTTPError: HTTP Error 405: Method Not Allowed

Je suis en train de faire une méthode POST. Cependant, ce script fonctionne sur mon python en cours d'exécution MAC OS X 2.7.1, sur mon python en cours d'exécution machine virtuelle 2.7, il jette cette erreur. Y at-il des httpHeaders je suis supposé de transmettre lors d'une requête POST?

Était-ce utile?

La solution

vous devriez trouver le doc que vous avez besoin ici:

http://code.google.com/apis/accounts/docs/ AuthForInstalledApps.html

Pour faire l'auth vous devez utiliser cette URL https://www.google.com/accounts/ ClientLogin qui exigent le service que vous essayez d'atteindre et il vous fournira un access_token pour le service spécifié

Vous devez cookie magasin pour ce type de demande:

import urllib2
import cookielib
cookiejar = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
urllib2.install_opener(opener)
return urllib2

Autres conseils

Oui, pour Google, ils auront probablement besoin que vous avez un agent utilisateur commun pour vous connecter. En plus de cela, vous aurez besoin de stocker le cookie ils vous donnent en python. Vous pouvez utiliser CookieJar.

Ceci est un bon tutoriel qui enseigne comment envoyer les en-têtes et enregistrer les cookies pour vos demandes. http://www.voidspace.org.uk/python/articles/urllib2.shtml

http://www.voidspace.org.uk/python/articles/ cookielib.shtml

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top