1

I want to use a rest api and for sending form their format is:

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

when I send it with postman i get my desired answer but I when i send this request with python I can't get correct answer. my python request:

 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: when postman convert my request to python code it give back something like this:

    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)
Ismael Padilla
  • 5,246
  • 4
  • 23
  • 35
Faezeh.98
  • 21
  • 1
  • 6
  • You are getting correct answer with Python, so what's your question? – Harsha Biyani Sep 18 '17 at 11:14
  • 1
    Possible duplicate of [Post JSON using Python Requests](https://stackoverflow.com/questions/9733638/post-json-using-python-requests) – mkrieger1 Sep 18 '17 at 11:18
  • 1
    Do you mean "can't get the correct answer"? Anyway, it looks to me like the structure of your Python `data` variable does not match the expected input you have shown, which seems to indicate that `data` is a dictionary with two keys (`Passenger` and `Reservation`) and that the value of the `Passenger` key is a list. – larsks Sep 18 '17 at 11:21
  • I mean, I can't get correct answer. – Faezeh.98 Sep 18 '17 at 11:52

2 Answers2

0

I was omitting blank value at first, I tried sending empty string instead of none value and it worked fine.

Faezeh.98
  • 21
  • 1
  • 6
-1

convert the data before sending, by using json.dumps()

response = requests.post("https://travel.ir/api", data=json.dumps(data), auth=('user', 'password'))
yoshiiiiiiii
  • 953
  • 8
  • 20