使用requests发起GET请求传递headers时遇AttributeError求助
问题根源
你碰到的AttributeError: 'str' object has no attribute 'items'其实很好理解:requests库的headers参数必须接收Python字典类型,但你当前传入的auth是一个JSON格式的字符串(就是那个带双引号的内容),字符串对象根本没有items()方法,所以直接触发了报错。
解决步骤
只需要把这个JSON字符串转换成Python字典就行,用Python内置的json模块就能搞定,不用额外安装第三方包:
- 先导入
json模块 - 用
json.loads()把JSON字符串解析成字典 - 把解析后的字典传给
headers参数
完整代码示例
import requests import json # 从其他渠道获取的带双引号的凭据字符串 auth_json_str = '{"APIUsername":"username","APIPassword":"password"}' # 转换为requests能识别的字典格式 auth_headers = json.loads(auth_json_str) # 正常发起GET请求 response = requests.get(URL, headers=auth_headers, verify=False)
额外注意事项
- 确保你拿到的JSON字符串格式合法:键和值都要用英文双引号,不能用单引号,也不能存在语法错误
- 如果字符串里有多余的空格或者转义字符,
json.loads()通常都能自动处理,只要核心格式没问题
内容的提问来源于stack exchange,提问作者Sandeep Sandy
相关产品推荐
相关产品推荐

