Frage

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

Ich mache eine Post -Methode. Dieses Skript funktioniert auf meinem Mac OSX, das Python 2.7.1 ausführt. Auf meiner virtuellen Maschine, die Python 2.7 ausführt, wirft es diesen Fehler aus. Gibt es einige HTTPHeaders, die ich bei einer Postanfrage weitergeben kann?

War es hilfreich?

Lösung

Sie sollten den Dokument finden, den Sie hier benötigen:

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

Für das Auth müssen Sie diese URL verwenden https://www.google.com/accounts/clientlogin Für den Service, den Sie erreichen möchten, erhalten Sie einen Access_Token für den angegebenen Dienst

Sie müssen Cookie für diese Art von Anfrage speichern:

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

Andere Tipps

Ja, für Google müssen Sie wahrscheinlich einen gemeinsamen Benutzeragenten anmelden. Darüber hinaus müssen Sie den Keks, den sie Ihnen in Python geben, aufbewahren. Sie können Cookiejar verwenden.

Dies ist ein großartiges Tutorial, in dem es lehrt, wie man Headers schickt und Cookies für Ihre Anfragen speichert.http://www.voidspace.org.uk/python/articles/urllib2.shtml

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top