使用urllib2时出现“无效的安全令牌”

时间:2019-11-28 13:40:10

标签: python python-2.7 urllib2

我正在尝试使用python脚本获取http请求的内容。但是我收到了 执行时发生Invalid security token错误。 这是以下代码段

#!/usr/bin/python
import urllib2

username="username"
password="password"
url='some_url'
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()
req = urllib2.Request(url)
req.add_header('Accept', 'application/json')
req.add_header("Content-type", "application/json")
req.add_header('Authorization', encodeUserData(username, password))
# make the request and print the results
print res.read()

用户名和密码带有特殊字符。

1 个答案:

答案 0 :(得分:0)

鉴于您能够在bash上使用curl成功运行请求并获得<Response [200]>,那么您应该能够在python-2.7中使用请求和urllib2来运行它。实际上,我只是尝试了以下方法:

# with requests
import requests
username="username"
password="password"
url='https://url.html'
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()

response = requests.get(url, headers={'Authorization': encodeUserData(username, password)})
print response.content

如果要使用urllib2,这也可以使用。

# with urllib2
import urllib2
username="username"
password="password"
url='https://url.html'
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()

req = urllib2.Request(url)
req.add_header('Authorization', encodeUserData(username, password))
res = urllib2.urlopen(req)
print res.read()

如果这行不通,我建议您直接用编码行替换用户名和密码,然后看看是否行得通。