如何在python中使用表单数据发送post请求?

如何在python中使用表单数据发送post请求?,python,python-requests,Python,Python Requests,我想使用rest api,发送表单的格式为: data[Passenger][0][passportnumber]: data[Passenger][0][fname]: data[Reservation][id]:6113081 data[Passenger][0][latinfname]:faezeh data[Passenger][0][age]:adl 当我和邮递员一起发送时,我得到了我想要的答案,但当我和Pyton一起发送此请求时,我无法得到正确的答案。我的python请求: da

我想使用rest api,发送表单的格式为:

data[Passenger][0][passportnumber]:
data[Passenger][0][fname]:
data[Reservation][id]:6113081
data[Passenger][0][latinfname]:faezeh
data[Passenger][0][age]:adl
当我和邮递员一起发送时,我得到了我想要的答案,但当我和Pyton一起发送此请求时,我无法得到正确的答案。我的python请求:

 data = {
  'data[Reservation][id]':6112211,
  'data[Passenger][0][latinfname]':'faeze',
  'data[Passenger][0][age]':'adl'}
 response = requests.post("https://travel.ir/api" , data = data, auth=('user', 'password'))
ps:当postman将我的请求转换为python代码时,它会返回如下内容:

    import requests

url = "https://travel.ir/api"

querystring = {"token":"token","member_id":"member_id"}

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][passportnumber]\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][fname]\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Reservation][id]\"\r\n\r\n6113081\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][latinfname]\"\r\n\r\nfaezeh\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][age]\"\r\n\r\nadl\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][birthday]\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][passportplaceissue]\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger[0][lname]\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][latinlname]\"\r\n\r\nfaeze\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][gender]\"\r\n\r\n1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Reservetion][email]\"\r\n\r\mail@gmail.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][nationalcode]\"\r\n\r\n1111111111\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][nationality]\"\r\n\r\nIRN\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"data[Passenger][0][passportexpdate]\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
    'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'authorization': "Basic wwwwwww",
    'cache-control': "no-cache",
    'postman-token': "wwwwwww"
    }

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.text)

使用json.dumps()在发送前转换数据


我一开始忽略了空白值,我尝试发送空字符串而不是无值,效果很好。

您使用Python得到了正确的答案,那么您的问题是什么?您的意思是“无法得到正确的答案”的可能重复?无论如何,在我看来,Python
data
变量的结构与您显示的预期输入不匹配,这似乎表明
data
是一个包含两个键(
Passenger
Reservation
)的字典,
Passenger
键的值是一个列表。我的意思是,我不能得到正确的答案。
response = requests.post("https://travel.ir/api", data=json.dumps(data), auth=('user', 'password'))