python - sim800模块AT指令如何发送POST请求?

标签 python json http-post at-command

我正在使用 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)

OK

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

OK

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

DOWNLOAD OK

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

{"data":"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 对象中获取数据(根据发布请求)

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

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

最佳答案

解决了使用 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)

OK

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

OK

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

DOWNLOAD OK

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

OK

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

+AT+HTTPACTION:1,200,31

关于python - sim800模块AT指令如何发送POST请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43470040/

相关文章:

java - Google 图表 API JSON 无效

c# - POST 请求并获取设置操作 MVC

python - 服务器上的打印语句给出 IOError : failed to write data

Python 检查损坏的视频文件(捕获 OpenCV 错误)

javascript - 如何在 Javascript/HTML5 中解析 Excel (XLS) 文件

json - 在.NET Core 项目中读取launchSettings.json?

ios - AFNetworking 3 x-www-form-urlencoded 发布数据

php - PHP 会处理 $_GET 和 $_POST 中变量的字符编码吗? (PHP 5.4)

python - 在 Python 中创建二维点列表的更优雅的方法

python 3 : super() raises TypeError unexpectedly