如何使用sim800模块AT命令发送POST请求?

时间:2017-04-18 10:45:55

标签: python json http-post at-command

我使用python

使用sim800模块发送带有AT命令的发布请求
g = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=2)
g.write('AT+HTTPPARA="URL","http://server/path"')
print g.read(128)
  

g.write('AT+HTTPPARA="CONTENT","application/json"')
print g.read(128)
  

g.write('AT+HTTPDATA=150,5000'+'\r\n')
print g.read(128)
  

下载确定

g.write("{\"data\":\"123\"}"+'\r\n')
print g.read(128)
  

{"数据":" 123"}       ERROR

g.write('AT+HTTPACTION=1' + '\r\n')  # -> POST session start
print g.read(128)
  

+ HTTPACTION:1,400,31

我想以json格式发送但是当我使用python执行此命令时,它显示这样的输出它不采用json格式我尝试使用json.loads(json.dumps(data))但它仍然没有发送到服务器端的服务器我不会得到request.body对象中的数据(根据帖子请求)

如何在帖子数据中以json格式发送数据? 或者发布数据需要哪些配置?

注意:我已经为GPRS配置了GSM模块

1 个答案:

答案 0 :(得分:1)

解决使用json.dumps()将json数据转换为字符串并在request.body对象中获取服务器端

data = {"param":"value","param2":0.01}
g = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=2)
g.write('AT+HTTPPARA="URL","http://server/path"')
print g.read(128)
  

g.write('AT+HTTPPARA="CONTENT","application/json"')
print g.read(128)
  

g.write('AT+HTTPDATA=1500,5000'+'\r\n')
print g.read(128)
  

下载确定

g.write(json.dumps(data))
print g.read(128)
  

g.write('AT+HTTPACTION=1' + '\r\n')  
print g.read(128)
  

+ AT + HTTPACTION:1,200,31