Python:requests.post没有发布

时间:2017-11-16 15:59:48

标签: python json firebase python-requests

我正在尝试将json字符串发布到Google Firebase。

相同的命令在没有使用curl的hickup的情况下工作,但如果我使用Python执行此操作,则数据库中没有数据。

以下是代码:

postdata = {"pm10": pm10, "pm2.5": pm25, "lat": gps_data.get('latitude'), "lon": gps_data.get('longitude'), "alt": gps_data.get('speed'), "spd": gps_data.get('altitude2'), "satt": gps_data.get('satellites')}

logging.info(args.url)
logging.info(postdata)


r = requests.post(args.url, data=postdata, headers={'content-type': 'application/json'})

logging.debug(r)

我使用以下方法调用脚本:

  

python l.py -u http://blabla.firebaseio.com/test1.json

输出结果为:

INFO:Serial device initialized
INFO:Posting to http://blabla.firebaseio.com/test1.json
INFO:http://blabla.firebaseio.com/test1.json
INFO:{'satt': 10, 'pm10': 30, 'lon': XX.XXXXX, 'pm2.5': 27, 'lat': YY.YYYYY, 'alt': 0.037, 'spd': 336.8}
INFO:PM 10: 30
INFO:PM 2.5: 27
INFO:Latitude: XX.XXXX
INFO:longitude: YY.YYYYY

但是当我打开数据库时,没有数据。

使用具有相同参数的curl。

更新

日志记录调试将此信息作为信息提供:

DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): blabla.firebaseio.com
DEBUG:requests.packages.urllib3.connectionpool:http://blabla.firebaseio.com:80 "POST /test1.json HTTP/1.1" 404 1571
DEBUG:root:<Response [404]>

1 个答案:

答案 0 :(得分:0)

所以,事实证明问题是由于json包含一个无效的char而传递的其中一个变量。

该值为pm2.5,因此我将其重命名为pm25。

关键是不要有任何字符如。 - 或类似的东西。

之后就开始工作了。