2017-09-18 79 views
1

我想用一个REST API和用于发送形成它们的格式是:如何通过表单数据在python中发送请求?

data[Passenger][0][passportnumber]: 
data[Passenger][0][fname]: 
data[Reservation][id]:6113081 
data[Passenger][0][latinfname]:faezeh 
data[Passenger][0][age]:adl 

当我邮递员送它让我的希望的答案,但我当我发送与pyhton这一请求,我不能得到正确的回答。我的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:当邮递员将我的请求,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\[email protected]\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) 
+0

你得到Python的正确答案,那么你的问题是什么? – Harsha

+1

[Post JSON using Python Requests]可能的重复(https://stackoverflow.com/questions/9733638/post-json-using-python-requests) – mkrieger1

+1

您的意思是“无法得到正确答案”?无论如何,它看起来像你的Python'data'变量的结构不符合你所显示的预期输入,这似乎表明'data'是一个带有两个键('Passenger'和'Reservation')的字典, Passenger'键的值是一个列表。 – larsks

回答

-1

发送之前的数据进行转换,通过使用json.dumps(

response = requests.post("https://travel.ir/api", data=json.dumps(data), auth=('user', 'password')) 
0

我最初忽略空白值,我试着发送空字符串而不是没有值,它工作正常。

相关问题