域格模块使用post功能

本文介绍了POST请求在HTTP协议中的应用,详细讲解了如何设置hfs以支持POST功能,以及使用模块连接服务器并处理multipart/form-data格式的文件上传和数据解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

POST请求是HTPP协议中一种常用的请求方法,它的使用场景是向客户端向服务器提交数据,比如登录、注册、添加等场景。另一种常用的请求方法是GET,它的使用场景是向服务器获取数据。


一、hfs设置

服务器需要如下设置才能进行post功能:
在这里插入图片描述
上面截图是从官方文档中获取的,需要注意几点:

1、需要添加一个真实的(不是虚拟的)文件夹,当添加到HFS中后,文件夹是“红色”的,如下图所示:
在这里插入图片描述
2:对文件夹属性进行设定,赋予upload权限
在这里插入图片描述
注意以上两点,hfs端的设置就基本可以了,可以接受客户端的post请求了

二、使用模块连接服务器流程

//初始化HTTP服务
AT+HTTPINIT
OK
//设置路径
AT+HTTPPARA="URL","http://110.42.233.58:9999/http/"
OK
//设置Content-Type
AT+HTTPPARA="USERDATA","Content-Type:multipart/form-data; boundary=--------------------------913866950166983945997246\\r\\nAPPKEY:FW"
OK
//设置数据长度413 超时时间设置为3秒
AT+HTTPDATA=413,3000 长度411 时间3秒
DOWNLOAD  //DOWNLOAD上报之后发送数据
发送
----------------------------913866950166983945997246
Content-Disposition: form-data; name=""; filename="cx4.txt"
Content-Type: text/plain

22222222222222222222222222
----------------------------913866950166983945997246
Content-Disposition: form-data; name=""; filename="cx3.bin"
Content-Type: application/octet-stream

11111111111111111111111111111
----------------------------913866950166983945997246--

数据最后需要添加回车以示结束

返回
OK
//进行post
AT+HTTPACTION=1  
OK

三、post相关数据解析

服务端通常是根据请求头中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。POST 几种请求主要包括 application/x-www-form-urlencoded、 multipart/form-data、 application/json、text/xml 四种主要方法的方法。
模块上传文件使用的是multipart/form-data,这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 表单的 enctype 等于 multipart/form-data。

AT+HTTPPARA="USERDATA","Content-Type:multipart/form-data; boundary=--------------------------913866950166983945997246\\r\\nAPPKEY:FW"

首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。

AT+HTTPDATA=413,3000 长度411 时间3秒
DOWNLOAD  //DOWNLOAD上报之后发送数据
发送
----------------------------913866950166983945997246
Content-Disposition: form-data; name=""; filename="cx4.txt"
Content-Type: text/plain

22222222222222222222222222
----------------------------913866950166983945997246
Content-Disposition: form-data; name=""; filename="cx3.bin"
Content-Type: application/octet-stream

11111111111111111111111111111
----------------------------913866950166983945997246--

数据最后需要添加回车以示结束

消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 –boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 –boundary– 标示结束。

Content-type:text/plain最常见的应用场景之一是发送包含代码、脚本、配置文件等一些不需要格式化和样式的文本内容。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值