Python POST字符串数据

Python POST字符串数据,python,python-requests,Python,Python Requests,我需要发布字符串数据,我可以使用curl而不是python的requests模块来完成 卷曲示例: curl -XPOST "https://hostname/apisyntax?queryparams" -d "key1=value&key2=value&key3=vlaue&key4[]=value" 这是一个不起作用的python示例: data_api = '"key1='+str(value1)+'&key2='+str(value2)+'&

我需要发布字符串数据,我可以使用curl而不是python的requests模块来完成

卷曲示例:

curl -XPOST "https://hostname/apisyntax?queryparams" -d  "key1=value&key2=value&key3=vlaue&key4[]=value"
这是一个不起作用的python示例:

data_api = '"key1='+str(value1)+'&key2='+str(value2)+'&key3='+str(value3)+'&key4[]='+str(value4)+'"'
call\u api=requests.post(url,data=data\u api)

我没有收到任何python错误,但目标服务器报告找不到key4的错误


请帮助理解python代码的问题所在

将参数作为
json
发送,而不是
data
,最终代码应该如下所示-

data_api = {'key1': str(value1), 
        'key2': str(value2), 
        'key3': str(value3), 
        'key4': [str(value4)]} 

call_api = requests.post (url, json=data_api)

将参数作为
json
发送,而不是
data
,您的最终代码应该如下所示-

data_api = {'key1': str(value1), 
        'key2': str(value2), 
        'key3': str(value3), 
        'key4': [str(value4)]} 

call_api = requests.post (url, json=data_api)
我注意到
key4
中有一个不一致的地方,这正是给您带来麻烦的地方

试一试

即在
键4[]

我注意到
key4
中有一个不一致的地方,这正是给您带来麻烦的地方

试一试


例如,在
key4[]

之后删除
[]
服务器上是否存在key4?是的,因为使用curl可以很好地工作。为什么Python请求中的
&key4[]
[]
而其他键没有?服务器上是否存在key4?是的,因为使用curl可以很好地工作。为什么
&key4[]
在您的Python请求中,当其他键没有时,您有了
[]
吗?我知道键4中有[]听起来很奇怪,但语法是这样的。我尝试过使用son和从字符串中删除[],但都会导致相同的错误。这是nagios的API,语法非常严格。这就是为什么我要说,当我使用curl-d选项传递相同的东西时,它可以工作,但不使用python。我尝试过使用son和从字符串中删除[],但都会导致相同的错误。这是nagios的API,语法非常严格。这就是为什么我说,当我使用curl-d选项传递相同的东西时,它可以工作,但不使用python。
data_api = '"key1='+str(value1)+'&key2='+str(value2)+'&key3='+str(value3)+'&key4='+str(value4)+'"'

call_api = requests.post (url, data=data_api)