SIM808 执行HTTP POST 例程【全网首发】

原创 2016年01月25日 23:24:38

整个文章从我学校的论坛转载:http://www.cqutlab.cn/thread-116-1-1.html  这里是复制粘贴的,可能有些有错误。。


既刚才我用C写的POST例程,测试可以过后,又用了很多时间来研究这个SIM808怎么利用POST提交数据到我后台来。

首先选择需要post的网页,我这里是开的webservice,
以我的webservice为例,上面写清楚了提交的方法,当然这里只是个hello world示例

图1
然后在SIM808输入一下截图的指令(这里千万记住,实际情况是需要轮询的机制,保持数据网络的畅通,一旦检测到网络不畅通,就要视图重新连接数据网络,战舰的sim900里面有例程讲怎么建立轮询保护机制)

图2

然后执行以下流程 串口给808发AT指令,下图3中 蓝色是808的返回值,切记一定要等它返回OK,自己在程序里面做判断,一旦不返回OK,那么就要有个轮询机制,继续发送设置,判断到多次不行,就要发送AT+HTTPTERM 关闭HTTP 再来,不然就会出错哦

图3

根据图3的流程,我们来做,但是实际流程情况和图3有时候有点出入
例如如果已经执行了AT+HTTPINIT  那么它会返回ERROR,这个时候有两种方式,一种就是去使用AT+HTTPSTATUS=?去查当前的状态,另外一个就是使用AT+HTTPTERM把HTTP关一下再开。总之不行了就关下,再开

下面给SIM808设置我WEBSERVICE的地址 根据图1,给出的POST相对地址,我们给它组合成绝对地址:“http://125.83.116.37/WebService1.asmx/HelloWorld”(双引号以内的内容)
然后写入sim的URL里面
  

下图4就是给出关了再开,然后执行整个设置的过程
其中URL使用:  AT+HTTPPARA="URL","http://125.83.116.37/WebService1.asmx/HelloWorld"  这个是根据webservice的方法组合起来的
根据webservice的要求,还需要设置:AT+HTTPPARA="CONTENT","application/x-www-form-urlencoded"  
由于从方法上面来看,这个返回helloworld的例子没有数据内容(参数),所以 设置就这样了

然后串口发送: AT+HTTPACTION=1  ,其中1就是POST方式。发送过后,808会马上回复OK,但是由于由于网络延迟等,下面那个  +HTTPACTION: 1,200,96   才是从服务器返回的值,所以这里单片机要做个延迟处理,建议等30秒,不行就宣告失败,关闭连接。其中1是表示POST方式,200代表这次访问成功,(只有看到200才行啊,其他的都是错的。具体哪个值对应哪个,可以看808手册AT+HTTPACTION命令)。96表示返回96个字节

然后串口发送 : AT+HTTPREAD=1,96  表示从第1个字节读取,一直读到96个字节 ,读取刚才POST过后 ,服务器返回给808的数据,从这个里面我看到 服务器返回Hello world了
最后执行:AT+HTTPTERM   关闭HTTP 为下一次做准备

整个流程结束





下面紧接着来一个提交带参数的例程
同样给出webservice里面POST的方法

图1
然后给出我网站后台怎么调用这个方法的
  [WebMethod]
        public string userLogin(string loginName, string password)
        {
            //password为loginName与实际的password一起加密后的值
            string key = MD5.CurKey();
            password = MD5.EncryptString(loginName + password, key);
            string[] prototype = new string[] { "operatorID", "loginName", "name", "disabled", "role", "companyID" };
            List<Dictionary<string, object>> list = basedao.findMapByProperties("T_P_Operator", prototype, "loginName='" + loginName + "' and password = '" + password + "'");
            if (list.Count == 0)
            {
                return "0";//用户名或者密码错误
            }
            else
            {
                if (Int32.Parse(list[0]["disabled"] + "") == 1)
                {


                    return "1";//登录成功
                }
                else
                {
                    return "2";//用户被禁用
                }
            }


看到了吧 ,只要输入用户名密码正确,就返回1,否则返回0,
下面给出一个用户名:23123  ,密码:  123456 ,的用户,用808试返回值
这个就涉及到发送数据了
我们根据本楼的图1 构造数据”loginName=23123&password=123456“  ,这就是我们要向服务器提交的字符,这个加上末尾的“\r\n",有33个字节  
其中AT+HTTPDATA=0,1000  意思就是把现在缓存区里面的东西先清空
然后AT+HTTPDATA=33,20000  ,意思是需要填入缓冲器33个字节(这个就要每次提交的时候算一下了),并且最大在20秒内结束填充,当然你在变成的时候,9600的波特率,1000个字节内,后面那个写成2000足够了,因为这个808会检测,当你提交到33个字节后,会自动完成提交,不管时间到没到,都会显示OK。并且这个提交完了只会显示OK,不会回显你提交的内容。
为了保险,我们用AT+HTTPREAD 来看看刚才在缓冲区里面提交的什么,最后同样的调用AT+HTTPACTION=1 来POST
(细心的同学会发现,在webservice要求里面 不是要求要有Content-Length: length,这个length参数么?我之前写的C语言提交版本确实要这个参数,但是这个808里面不必管它,它会自动算出,并且提交,所以提交的DATA里面也不用写这一行)

同样 POST过后 单片机要写等待机制,等服务器返回信息  同样的 一定要等到返回200 才算正确啊
最后用AT+HTTPREAD来查看服务器返回的信息    我们可以看到确实返回了个1,当然还包含其他<>的标签内容。这个时候,单片机也要做相应的解析






  









相关文章推荐

sim808基站定位

sim808是带基站定位功能的,可通过AT指令获取附近小区信息,然后根据数据库转化成经纬度信息,即可完成辅助定位功能,测试流程如下: AT+CGATT? +CGATT: 1 ...
  • gyb510
  • gyb510
  • 2016年07月27日 14:19
  • 1956

sim808 gps 定位数据解析

AT+CGNSPWR=1 //打开GPS电源 正常返回“OK” AT+CGNSPWR=0 //关闭GPS电源   2、AT+CGNSSEQ="RMC"//定义NMEA解析 返回: “O...

一次完整的HTTP事务是怎样一个过程?

当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?以下过程仅是个人理解:域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起...
  • tanyjin
  • tanyjin
  • 2017年04月29日 11:50
  • 269

基于STM32的CAN总线通信学习笔记

本文主要简单介绍CAN总线的相关概念,以及通信协议等知识,和使用STM32自带的bxCAN外设进行CAN总线编程实验,以及编程心得。...

佳域G4厚电标准版刷机包 移植ColorOS 2.0全网首发 流畅体验

ROM介绍   1.基于官方最新底包移植ColorOS 2.0,   (感谢wuxianlin提供)流畅省电、给您完美的视觉和操控体验!   2.WIFI/蓝牙/通话/通话免提/收音机/指南针/...

libevent 多线程 HTTP post服务器

  • 2014年09月03日 16:37
  • 25.09MB
  • 下载

C#和NewSQL更配 —— CockroachDB入门(可能是C#下的全网首发)

CockroachDB是Google备受瞩目的Spanner的开源模仿,承诺提供一种高存活性、强一致性,可横向扩展的SQL数据库。主要的设计目标是全球一致性和可靠性,从蟑螂(cockroach)的命名...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SIM808 执行HTTP POST 例程【全网首发】
举报原因:
原因补充:

(最多只允许输入30个字)