【问题标题】:how to send POST request with sim800 module AT commands?如何使用 sim800 模块 AT 命令发送 POST 请求?
【发布时间】:2017-04-18 10:45:55
【问题描述】:

我正在使用 python 使用 sim800 模块发送带有 AT 命令的 post 请求

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"} 错误

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 对象(根据 post 请求)

如何在post数据中发送json格式的数据?? 或者发布数据需要哪个配置?

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

【问题讨论】:

  • 当您不是reading and parsing 调制解调器返回的响应时,您的代码将永远可靠地工作,等待最终结果代码,然后再发送下一个命令。如果这在大多数情况下都有效,那么您将非常幸运。你绝对应该解决这个问题。

标签: python json http-post at-command


【解决方案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

【讨论】:

  • 您能解释一下值 128、1500 和 5000 的含义吗?
猜你喜欢
  • 2012-04-03
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2022-01-14
  • 2013-04-02
  • 2011-08-04
  • 2011-07-15
相关资源
最近更新 更多