Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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:使用请求的POST中的错误请求_Python_Http - Fatal编程技术网

Python:使用请求的POST中的错误请求

Python:使用请求的POST中的错误请求,python,http,Python,Http,我应该寄这个: curl--header“Content Type:text/plain”--请求POST--data“ON”example.com/rest/items/z12 相反,我发送的是: import requests headers = {"Content-Type": "text/plain"} url = 'http://example.com/rest/items/z12' _dict = {"ON": ""} res = requests.post(url, auth=('

我应该寄这个:

curl--header“Content Type:text/plain”--请求POST--data“ON”example.com/rest/items/z12

相反,我发送的是:

import requests
headers = {"Content-Type": "text/plain"}
url = 'http://example.com/rest/items/z12'
_dict = {"ON": ""}
res = requests.post(url, auth=('demo', 'demo'), params=_dict, headers=headers)
我得到一个错误400(错误请求?)

我做错了什么?

帖子主体设置为
ON
;使用
数据
参数:

import requests

headers = {"Content-Type": "text/plain"}
url = 'http://example.com/rest/items/z12'

res = requests.post(url, auth=('demo', 'demo'), data="ON", headers=headers)
params
参数用于URL查询参数,通过使用字典,您要求
请求将其编码为表单编码;因此
?ON=
被添加到URL中

见:

(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同

数据–(可选)要在
请求
正文中发送的字典、字节或类似文件的对象

帖子主体设置为
上的
;使用
数据
参数:

import requests

headers = {"Content-Type": "text/plain"}
url = 'http://example.com/rest/items/z12'

res = requests.post(url, auth=('demo', 'demo'), data="ON", headers=headers)
params
参数用于URL查询参数,通过使用字典,您要求
请求将其编码为表单编码;因此
?ON=
被添加到URL中

见:

(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同

数据–(可选)要在
请求
正文中发送的字典、字节或类似文件的对象


requests.post
方法中的
params
参数用于将GET参数添加到URL。所以你在做这样的事情:

curl --header "Content-Type: text/plain" --request POST example.com/rest/items/z12?ON=
您应该改为使用
数据
参数

import requests
headers = {"Content-Type": "text/plain"}
url = 'http://example.com/rest/items/z12'
res = requests.post(url, auth=('demo', 'demo'), data="ON", headers=headers)

此外,如果您为数据参数指定一个术语,它将以“application/x-www-form-urlencoded”的形式发送有效负载。在curl命令中,发送原始字符串作为有效负载。这就是为什么我稍微更改了您的示例。

请求中的参数
。post
方法用于将GET参数添加到URL。所以你在做这样的事情:

curl --header "Content-Type: text/plain" --request POST example.com/rest/items/z12?ON=
您应该改为使用
数据
参数

import requests
headers = {"Content-Type": "text/plain"}
url = 'http://example.com/rest/items/z12'
res = requests.post(url, auth=('demo', 'demo'), data="ON", headers=headers)

此外,如果您为数据参数指定一个术语,它将以“application/x-www-form-urlencoded”的形式发送有效负载。在curl命令中,发送原始字符串作为有效负载。这就是为什么我对你的例子做了一些修改。

非常感谢。成功了!我已经阅读了手册,其中()没有特别提到我必须使用“数据”才能在文章正文中添加额外的数据。同样,通过阅读
curl
手册页,它表明--data用于发送请求参数。这就是为什么我选择使用
params
@xpanta:right。我不确定curl在哪里声明这些是参数;我看到的文档中的第一句确实提到了POST请求。诚然,这确实需要一些关于HTTP POST如何正常工作的知识。:-)谢谢。成功了!我已经阅读了手册,其中()没有特别提到我必须使用“数据”才能在文章正文中添加额外的数据。同样,通过阅读
curl
手册页,它表明--data用于发送请求参数。这就是为什么我选择使用
params
@xpanta:right。我不确定curl在哪里声明这些是参数;我看到的文档中的第一句确实提到了POST请求。诚然,这确实需要一些关于HTTP POST如何正常工作的知识。:-)