首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python相当于curl命令,具有api内标识basic auth

python相当于curl命令,具有api内标识basic auth
EN

Stack Overflow用户
提问于 2019-06-18 09:13:03
回答 2查看 705关注 0票数 0

我正在开发helpshift api,并试图找到一个准确的请求调用,它将返回问题元数据。我试过很多例子,但它总是返回401状态。

但是,我能够让curl命令工作

提供给我的东西是: apikey,url,return是json响应

有效的CURL命令是:

代码语言:javascript
复制
curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic <base64_encoded_version_of_api_key_for_basic_auth>' '<helpshift_url>'

我试过的东西如下:

代码语言:javascript
复制
>>> api_key = "ABCDEFGH"
>>> issue = '<helpshift_url>'
>>> 
>>> r = requests.get( issue, auth = ( api,"" ))
>>> r.status_code
401
>>> 
>>> import base64
>>> api_new = base64.b64encode(api_key.encode("UTF-8"))
>>> 
>>> r = requests.get( issue, auth = ( api_new,"" ))
>>> r.status_code
401

我要打印的是json响应。

EN

回答 2

Stack Overflow用户

发布于 2019-06-18 09:19:49

requests auth param负责http基本身份验证。根据我在您的代码中看到的,您希望修改头文件,而不是执行auth。

这是通过将头dict headers = {'Authorization': api_new}作为r = requests.get( issue, headers=headers)传递给请求来完成的。

完整的代码是

代码语言:javascript
复制
import base64
import requests

api_key = "ABCDEFGH"
issue = '<helpshift_url>'

api_new = base64.b64encode(api_key.encode("UTF-8"))
headers = {'Authorization': api_new}

r = requests.get( issue, headers=headers)
票数 0
EN

Stack Overflow用户

发布于 2019-06-18 09:21:41

您需要使用头部:

代码语言:javascript
复制
>>> import base64
>>> api_new = base64.b64encode(api_key.encode("UTF-8"))
>>> 
>>> r = requests.get( issue, header="Authorization: Basic {}'.format(api_new))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56640581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档