Python &引用;无效的安全令牌“;在使用urllib2时

Python &引用;无效的安全令牌“;在使用urllib2时,python,python-2.7,urllib2,Python,Python 2.7,Urllib2,我正在尝试使用python脚本获取http请求的内容。但是我收到了 无效的安全令牌执行时出错。 下面是下面的代码片段 #!/usr/bin/python import urllib2 username="username" password="password" url='some_url' def encodeUserData(user, password): return "Basic " + (user + ":" + password).encode("base64").rst

我正在尝试使用python脚本获取http请求的内容。但是我收到了
无效的安全令牌
执行时出错。 下面是下面的代码片段

#!/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()

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

如果您能够在bash上使用
curl
成功运行请求,并获得
,那么您应该能够在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()

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

.encode(“base64”)
不是文本编码。你能解释一下你想用函数
encodeUserData
做什么吗?我想对我的用户名和密码进行编码。你可以这样做:只需要将你的单词变成byte:
base64.b64编码(b'username'+b:“+b'password”)
。这对你有帮助吗?@giosans我想我做了一些错误的事情,而不是编码的东西。它不工作了。@snakecharmerb这是标题