python - 从 Sonarqube 从 Api 提取数据时出现错误 401
问题描述
直接在Browser中使用Api地址时,正确的带入了数据和Json。
但是在 Postman 或 Python 中尝试相同的操作时,不会加载数据。
令牌有效,我在普通公司的 VPN 上,但没有成功。
有没有人经历过这个并且知道分析它的方法?
代码:
response = requests.get('https://urlsonar/api/components/search_projects', verify=False)
print(response.status_code)
print(response.json())
代码 2:
response = requests.get('https://urlsonar/api/components/search_projects', headers={'Authorization': '479ec8bdb82b316abad411fc21d3bed129e19c05'}, verify=False)
print(response.status_code)
print(response.json())
错误:
401 Traceback(最近一次调用最后):文件“C:\Users\Paulo\Documents\projetos\python\CONEXAO_SONAR_EMISSAO.py”,第 39 行,在 print(response.json()) 文件“C:\Users\Paulo\ AppData\Roaming\Python\Python39\site-packages\requests\models.py”,第 900 行,在 json 中返回 complexjson.loads(self.text, **kwargs) 文件“C:\Program Files\Python39\lib\json_ init _.py",第 346 行,加载返回 _default_decoder.decode(s) 文件“C:\Program Files\Python39\lib\json\decoder.py”,第 337 行,解码 obj,end = self.raw_decode( s, idx=_w(s, 0).end()) 文件“C:\Program Files\Python39\lib\json\decoder.py”,第 355 行,在 raw_decode 中引发 JSONDecodeError("Expecting value", s, err .value) 来自无 json.decoder.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)PS C:\Users\Paulo\Documents\projetos\python>
解决方案
令牌可能是有效的,但它的使用方式却不是。Authorization
标头应该包含身份验证方法和一个值,在方法的情况下Basic
应该是一个 base64 编码的字符串username:password
。使用 SonarQube 令牌,您应该用令牌替换用户名并使用空密码。
给定 base64 编码的值:
$ echo -n '479ec8bdb82b316abad411fc21d3bed129e19c05:' | base64
NDc5ZWM4YmRiODJiMzE2YWJhZDQxMWZjMjFkM2JlZDEyOWUxOWMwNTo=
标题应该是:
Authorization: Basic NDc5ZWM4YmRiODJiMzE2YWJhZDQxMWZjMjFkM2JlZDEyOWUxOWMwNTo=
然而,使用requests
库最简单的方法是使用auth
而不是自己计算标题,即:
response = requests.get('https://urlsonar/api/components/search_projects',
auth=('479ec8bdb82b316abad411fc21d3bed129e19c05', ''))
推荐阅读
- c# - 如何在 EF Core 3.1 中使用 Linq 表达式与 GroupBy 的多个表进行完全联接
- android - 由同一开发人员在 Android 应用程序之间共享数据
- pine-script - Pine 脚本指示器问题(可能代码已过时)
- apache-spark - 将 csv 文本的数据框列分解为列
- python - 在 python 中使用 3D 数组填充 2D 数组
- .net-core - Asp.net 核心 & Tailwind css
- android - 使用重新训练的 Tensorflow 对象检测模型使用 snpe 进行 pb 到 dlc 转换失败
- mysql - mysql连接sleep太多,wait_timeout不起作用
- google-app-engine - 在原生模式下在 AppEngine + Firestore 中创建复合索引
- python - 如何使用 postgresql 在“bytea”数据类型列中查询?