带有变量的python3请求主体

时间:2018-11-23 21:35:31

标签: python-3.x http-headers python-requests

在使用请求进行HTTP POST请求时,我陷入了Python3代码中。我需要将变量“ 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 :(得分:1)

在将data字典提供给post()时,需要将其request = requests.post('https://api.trackingmore.com/v2/trackings/post', headers=headers, data=json.dumps(data))转换为json字符串,但这并不是隐式发生的:

{{1}}