首页 > 解决方案 > 我收到 python 错误 - AttributeError: 'str' object has no attribute 'items'

问题描述

在这里需要一些帮助。我正在尝试在我的请求中发送带有标头的 JWT 令牌。当我直接将令牌复制粘贴到请求中时(第 6 行),它工作正常。当我连接为字符串并发送(第 3 行和第 5 行)时,它会抛出错误。但是当打印令牌时它具有正确的令牌值。我在代码之后粘贴的错误

response = requests.post("some URL")
token = response.text
header_content = "{'Authorization': 'Bearer "+token+"'}"
print(header_content)
response = requests.get(url, headers=header_content)
#response = requests.get(url, headers = {'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1bmlxdWVfbmFtZSI6ImhjbF9yZXBvcnRpbmcuc2VydmljZWFjY291bnRAc2x1LnRlYW1keW5hbWl4LmNvbSIsInRkeF9lbnRpdHkiOiIyIiwidGR4X3BhcnRpdGlvbiI6IjcwIiwiaXNzIjoiVEQiLCJhdWQiOiJodHRwczovL3d3dy50ZWFtZHluYW1peC5jb20vIiwiZXhwIjoxNjIyOTgyNzg5LCJuYmYiOjE2MjI4OTYzODl9.82FuBtybRBk3Ot-whKYEXw2yFeNXBp566MubEA9G-BE'})

the error i am seeing is

Traceback (most recent call last):
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\Rest_Testing.py", line 24, in <module>
response = requests.get(url, headers=header_content)
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\venv\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\venv\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\venv\lib\site-packages\requests\sessions.py", line 528, in request
prep = self.prepare_request(req)
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\venv\lib\site-packages\requests\sessions.py", line 456, in prepare_request
p.prepare(
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\venv\lib\site-packages\requests\models.py", line 317, in prepare
self.prepare_headers(headers)
File "C:\Users\prasannakumaravel\PycharmProjects\SLU_DailyReport_Automation\venv\lib\site-packages\requests\models.py", line 449, in prepare_headers
for header in headers.items():
AttributeError: 'str' object has no attribute 'items'

标签: pythonrequest

解决方案


header_content应该是字典而不是字符串

改变这个

header_content = "{'Authorization': 'Bearer "+token+"'}"

header_content = {'Authorization': "Bearer "+token}

您可以从错误 Traceback 中跟踪它:

for header in headers.items():
AttributeError: 'str' object has no attribute 'items'

.items()是一个字典的属性,not string它返回一个元组对列表:

你的情况header.items()

[('Authorization', 'Bearer your_token')]

推荐阅读