我正在编写一个脚本,它需要使用指定的公钥来获取reCAPTCHA质询,所以如果我用urllib2
打开它,我就会这样做:
chp = urllib.urlencode(dict({'k': key}))
chg = urllib2.urlopen('http://www.google.com/recaptcha/api/challenge', chp).read()
然后我可以从那里接受挑战并返回它,但是当它这样做时我得到错误:
urllib2.HTTPError: HTTP Error 405: HTTP method POST is not supported by this URL
我该如何解决这个问题?
答案 0 :(得分:0)
改为使用GET请求:
chp = urllib.urlencode(dict({'k': key}))
chg = urllib2.urlopen('http://www.google.com/recaptcha/api/challenge?' + chp).read()
数据可以是指定要发送到服务器的其他数据的字符串,如果不需要这样的数据,则为None。目前,HTTP请求是唯一使用数据的请求;当提供数据参数时,HTTP请求将是POST而不是GET。
您将chp
作为POST数据传递,将其作为第二个位置参数传递给urlopen
方法。使用?
将其连接到URL,而不是使其成为GET请求。