Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python请求中使用头和基本身份验证_Python_Python Requests_Basic Authentication - Fatal编程技术网

在python请求中使用头和基本身份验证

在python请求中使用头和基本身份验证,python,python-requests,basic-authentication,Python,Python Requests,Basic Authentication,我有一个测试url https://test.app.com/api/rest 为了访问url及其内容,有必要将标题发送为 headers={"Content-Type":"application/json"} 并且还将使用基本身份验证,其中凭据是 username=apple , password=ball 我用过 from requests.auth import HTTPBasicAuth requests.post(URL,auth=HTT

我有一个测试url

https://test.app.com/api/rest
为了访问url及其内容,有必要将标题发送为

headers={"Content-Type":"application/json"}
并且还将使用基本身份验证,其中凭据是

username=apple , password=ball
我用过

from requests.auth import HTTPBasicAuth

requests.post(URL,auth=HTTPBasicAuth(username, password),
                                 data=data,
                                 headers=headers)

这是向url发送post请求的正确方法吗?同时发送标题和基本身份验证?一般来说:是的,似乎还可以

但一些注意事项/修复/提示:

  • BasicAuth可以用作元组,因此
    auth=(用户名、密码)
    就足够了-

  • 当您执行任何请求时,您应该保存其结果,以了解其是否成功,并对其进行诊断。通常
    r=requests.post(…)
    就足够了。然后,您可以手动检查
    r.status\u code
    (并检查
    r.content
    )或执行
    r.raise\u for_status()
    ,只获取4xx和5xx代码的错误

    r.raise\u for_status()
    将仅根据代码本身和看起来的内容引发错误。但有时
    r.content
    可能会提供实际发生故障的信息,例如“400错误请求”,而响应可能会在其内容中包含缺少的字段)

  • 至于json头和
    data=data
    。。。另一个速记<代码>数据=要求您以希望直接发送的形式传递数据。但是
    requests
    lib知道很多时候我们想要发送json数据,所以他们实现了一个
    json=
    参数-它负责将dict/list结构转换为json,并设置
    内容类型
    标题

  • 因此,在你的情况下:

    data={“示例”:“数据”}
    r=requests.post(URL,#保存结果以供以后检查
    auth=(用户名、密码),#您可以在不使用构造函数的情况下传递它
    json=data)#无需手动添加json.dumps或头文件!
    
    如果希望发送json数据,只需将数据替换为json即可。其他字段也可以。

    看起来不错,运行良好吗?确保数据作为json字符串传递:
    data=json.dumps(data)