Domanda

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

Sto facendo un metodo POST. Questo script funziona sul mio Mac OSX in esecuzione pitone 2.7.1, però, sulla mia macchina virtuale in esecuzione pitone 2.7 getta tale errore. V'è una certa HTTPHeaders Sono supponiamo di passare lungo quando si effettua una richiesta POST?

È stato utile?

Soluzione

si dovrebbe trovare il doc che è necessario qui:

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

Per fare l'autenticazione è necessario utilizzare questo URL https://www.google.com/accounts/ ClientLogin che richiedono il servizio che si tenta di raggiungere e vi fornirà un access_token per il servizio specificato

È necessario memorizzare dei cookie per questo tipo di richiesta:

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

Altri suggerimenti

Sì, per google che probabilmente richiedono la presenza di un agente utente comune a login. Oltre a questo è necessario per memorizzare il cookie ti danno in Python. È possibile utilizzare Cookiejar.

Questo è un ottimo tutorial che insegna come inviare le intestazioni e salvare i cookie per le vostre richieste. http://www.voidspace.org.uk/python/articles/urllib2.shtml

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top