тело запроса python3 с переменной - PullRequest
0 голосов
/ 24 ноября 2018

Я застрял в своем коде Python3 при использовании запросов для выполнения запросов HTTP POST.Мне нужно поместить переменную "PackageId" в данные и получить ошибку:

{"meta":{"code":4015,"type":"Bad Request","message":"The value of `carrier_code` is invalid."},"data":[]}

Мой код:

import requests
import json

PackageId = input("Package number:")

headers = {
   'Content-Type': 'application/json',
   'Trackingmore-Api-Key': 'MY-API-KEY',
}

data = { 
   'tracking_number': PackageId,
   'carrier_code': 'dpd-poland'
}
request = requests.post('https://api.trackingmore.com/v2/trackings/post', headers=headers, data=data)

Используемый метод HTTP POST в порядке, потому что когда я жестко кодирую PackageIdв теле, запрос выполнен успешно.

data = '{ "tracking_number": "1234567890", "carrier_code": "dpd-poland" }'

Что может быть не так?Пожалуйста, помогите, я застрял и потратил много часов, пытаясь найти проблему.

Вот команда CURL, которую я хочу воспроизвести:

curl -XPOST -H 'Content-Type: application/json' -H 'Trackingmore-Api-Key: MY-API-KEY' -d '{ "tracking_number": "01234567890", "carrier_code": "dpd-polska"  }' 'https://api.trackingmore.com/v2/trackings/post'

Спасибо !!!

1 Ответ

0 голосов
/ 24 ноября 2018

Вам нужно конвертировать data dict в строку json при предоставлении его post(), это не происходит неявно:

request = requests.post('https://api.trackingmore.com/v2/trackings/post', headers=headers, data=json.dumps(data))

...