Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 REST POST_Python_Rest_Basic Authentication - Fatal编程技术网

带有基本身份验证的Python REST POST

带有基本身份验证的Python REST POST,python,rest,basic-authentication,Python,Rest,Basic Authentication,我正试图获得一个使用Python3的POST请求,该请求将向使用basic auth的平台提交一个json负载。我得到了一个405状态错误,我相信这可能是由于我的有效负载的格式。我正在学习Python,但仍然不确定何时使用“vs”、对象vs数组以及某些请求的语法。在搜索过程中,我还没有找到类似的问题,即使用basic auth发布数组。以下是我目前得到的信息: import requests import json url = 'https://sampleurl.com' payload =

我正试图获得一个使用Python3的POST请求,该请求将向使用basic auth的平台提交一个json负载。我得到了一个405状态错误,我相信这可能是由于我的有效负载的格式。我正在学习Python,但仍然不确定何时使用“vs”、对象vs数组以及某些请求的语法。在搜索过程中,我还没有找到类似的问题,即使用basic auth发布数组。以下是我目前得到的信息:

import requests
import json

url = 'https://sampleurl.com'
payload = [{'value': '100','utcRectime': '09/23/2018 11:59:00 PM','comment': "test",'correctionValue': '0.0','unit': 'C'}]
headers = {'content-type': 'application/json'}

r = requests.post(url, auth=('username','password'), data=json.dumps(payload), headers=headers)


print (r)
在API swagger中测试时,CURL包含以下格式:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '[{"value": "100","utcRectime": "9/23/2018 11:59:00 PM","comment": "test","correctionValue": "0.0","unit": "C"}]' 

我认为您不想
将列表转储为字符串。
请求将把python数据结构转换为正确的负载。
请求
库也足够智能,如果您指定
json
关键字参数,它可以生成正确的头

您可以尝试:

r = requests.post(url, auth=('username','password'), json=payload)
此外,有时网站会阻止未知用户代理。您可以尝试通过以下操作假装自己是浏览器:

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.post(url, auth=('username','password'), json=payload, headers=headers)

HTH.

我认为您不想
将列表转储为字符串。
请求将把python数据结构转换为正确的负载。
请求
库也足够智能,如果您指定
json
关键字参数,它可以生成正确的头

您可以尝试:

r = requests.post(url, auth=('username','password'), json=payload)
此外,有时网站会阻止未知用户代理。您可以尝试通过以下操作假装自己是浏览器:

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.post(url, auth=('username','password'), json=payload, headers=headers)
HTH.

从requests 2.4.2(),支持“json”参数。无需指定“内容类型”。因此较短的版本:

requests.post('https://sampleurl.com,auth=(用户名,密码),json={'value':'100','utcRectime':'09/23/2018 11:59:00 PM','comment':'test','correctionValue':'0.0','unit':'C'})
详情:

导入请求
导入json
username=“输入\u用户名”
password=“输入密码”
url=”https://sampleurl.com"
data=open('test.json','rb')
r=requests.post(url,auth=(用户名,密码),data=data)
打印(r.状态\ U代码)
打印(右文本)
从requests 2.4.2(),支持“json”参数。无需指定“内容类型”。因此较短的版本:

requests.post('https://sampleurl.com,auth=(用户名,密码),json={'value':'100','utcRectime':'09/23/2018 11:59:00 PM','comment':'test','correctionValue':'0.0','unit':'C'})
详情:

导入请求
导入json
username=“输入\u用户名”
password=“输入密码”
url=”https://sampleurl.com"
data=open('test.json','rb')
r=requests.post(url,auth=(用户名,密码),data=data)
打印(r.状态\ U代码)
打印(右文本)

感谢您的建议。我已尝试删除转储,然后使用和不使用您建议的标头运行转储,但不幸的是仍然返回405状态。感谢您的建议。我已尝试删除转储,然后使用和不使用您建议的标头运行转储,但不幸的是仍然返回405状态地位