2017-09-18 78 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

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

相關問題