我正在尝试使用Python的request
模块发布数据,但始终会出错。如果我使用相同的数据通过postman
发布到API,则会收到201
响应,这很好。这是python代码:
import requests
json_data = open(config_file)
config_data = json.load(json_data)
json_data.close()
############################
# some code to get health_data
############################
health_data = json.dumps(health_data)
try:
log.error("Posting data to API")
response = requests.post(config_data["API"], data=health_data)
log.error(response.status_code, response.reason)
except Exception as e:
log.error(e)
我已将所有配置保存在config.json
文件中。 health_data
是我正在使用json.dumps
转换为json格式的数据。当我将此health_data
发布到API时,我总是得到500。但是,如果我使用health_data
将相同的postman
发布到API,则会得到201
响应代码,因此我认为python代码有问题。我认为此行有问题:
response = requests.post(config_data["API"], data=health_data)
我也尝试使用json
代替data
,因为我有json数据,如下所示:
response = requests.post(config_data["API"], json=health_data)
但是它会抛出同样的500错误。
谁能给我指出正确的方向。非常感谢。
health_data:
{
"macs": "44ead844c9d1",
"aTime": "2018-08-09T19:04:01Z",
"startTime": "2018-08-09T19:04:01Z",
"stopTime": "2018-08-29T18:19:48Z",
"data1": ["2018-08-09T19:04:02Z : 26.62", "2018-08-09T19:19:02Z : 27.82", "2018-08-29T18:04:19Z : 18.79", "2018-08-29T18:19:48Z : 20.26"],
"data2": ["2018-08-09T19:04:02Z : 63.83", "2018-08-09T19:19:02Z : 59.16", "2018-08-09T19:34:02Z : 58.73", "2018-08-29T18:04:19Z : 100", "2018-08-29T18:19:48Z : 85.51"]
}
答案 0 :(得分:0)
您使用的命令是什么意思:
>>> help(open)
Open a file for reading in text mode and return a stream
>>> help(json.load)
Deserialize a .read()-supporting file-like object containing a JSON document to a Python object.
>>> help(json.dumps)
Serialize `obj` to a JSON formatted `str`
>>> help(requests.post)
post(url, data=None, json=None, **kwargs)
Sends a POST request.
:param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.
:param json: (optional) json data to send in the body of the :class:`Request`.
根据此信息:您可以使用open
参数来json.load
,request.post
和data
。
答案 1 :(得分:0)
我通过不使用json消息发布数据来解决它。我已经在python中使用dict()并使用:
发布了数据response = requests.post(config_data["API"], json=health_data)