2017-11-16 2 views
0

Google Firebase에 json 문자열을 게시하려고합니다.Python : requests.post 게시하지 않았습니다.

같은 명령은 hickups없이 curl을 사용하지만, 파이썬을 사용하면 동일한 데이터가 DB에 저장되지 않습니다.

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 
:

출력은

파이썬 l.py이 http://blabla.firebaseio.com/test1.json을 -u : 내가 사용하는 스크립트를 호출

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) 

: 여기

코드입니다

하지만 DB를 열면 데이터가 없습니다.

같은 매개 변수를 사용하여 컬을 작동시킵니다.

업데이트 : 그래서,

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]> 
+0

'logging.debug (r)'줄이 출력되지 않는 것처럼 보입니다. 로그 레벨을'DEBUG'으로 설정할 수 있습니까? 그렇지 않으면'r' 객체가 다음 값에 대해 가지고있는 것을 보여줄 수 있습니까? 'r.status_code'와'r.text'? – birryree

+0

데이터를 저장하기 전에 데이터가 유효하지 않습니다'json.dumps (your_data)'(어떤 메소드를 사용합니까 : table/Whole_data_as_string?) – dsgdfg

+0

실례지만 로그 수준을 디버그로 설정합니까? – R0b0tn1k

답변

0

를 JSON 잘못된 문자를 포함로 문제가 변수 중 하나가 전달되는로했다 밝혀 :

로깅 디버그 정보로이를 제공합니다.

값은 pm2.5 였으므로 이름을 pm25로 변경했습니다.

키에는와 같은 문자가 없어야합니다. - 또는 어떤 종류의.

그 후 작동하기 시작했습니다.

관련 문제