SIM900A访问HTTP的简单方法

最近做项目,使用Arduino控制设备,读取数据,然后通过移动网络传送到服务器。

我选用的是正点原子的SIM900A模块。在服务器部署了一个监听程序,Arduino控制SIM900A通过TCP方式把数据发送到服务器。

某天,突然想,SIM900A能不能访问网页呢?如果能,直接把数据通过网页提交上去不就更简单了嘛。

于是乎,果断咨询卖家,得到的答复是“理论上可行,但是没测试过”。

好吧,那只能百度了。不百不知道,一百吓一跳。全网好像没有一个完整的SIM900A访问HTTP的例子。恰好,Google又访问不了(想做个好孩子,不FQ)。只能自己帮自己了。

1、要访问网页,总得先上网吧。

那手机是怎么上网的呢?打开“数据连接”就行了吧。恩。可是手机怎么知道怎么接入网络呢?想起当年用Hero的时候,无数次设置APN,如下图。

     

看明白了吗?手机中有默认的网络接入点,当打开“数据连接”的时候,手机会接入指定的接入点。那么,再回过头来看AT+SAPBR指令的参数,原来如此。那我们执行如下的AT指令:

(1)AT+SAPBR=3,1,"APN","cmnet":这条指令设置接入点名称(第4张图第二行)。

(2)AT+SAPBR=3,1,"PHONENUM","12345678900":设置电话号码。

其它的参数不用这是了吧,因为第4张图上也没有设置。

(3)AT+SAPBR=4,1:查询参数设置。

(4)AT+SAPBR=5,1:将本次的参数设置保存到RAM,下次就不用设置了,直接打开就行。

4条指令中,那个“1”是什么意思?其实,我也没搞的很清楚,就算是个标识吧。

(5)AT+SAPBR=1,1:打开承载,我的理解是你打开了“数据连接”。

(6)AT+SAPBR=2,1:这条命令可以查看到接入网络的状态还有IP地址。

好了,现在我已经接入网络了(返回的第2个参数是1表示已经连接),我的IP地址是“10.129.8.149”(第3个参数)。

2、没有UC,我咋访问网页呢?

慢慢来。先看看“第10章HTTP应用AT指令”,一共7条指令。基本思路就是先初始化,然后设置参数,激活HTTP,等到相应,然后再读返回的数据,最后关闭。下面,我要访问我们学院的网站了:http://www.dyxy.net。

(1)AT+HTTPINIT:初始化HTTP。

(2)AT+HTTPPARA="CID","1":设置承载上下文标识,和上面一致。

(3)AT+HTTPPRAR="URL","http://www.dyxy.net":设置你要访问的那个网站,要加上“http://”协议的啊。

其它的参数我们暂且不去设置。

(4)AT+HTTPACTION=0:激活HTTP请求,0表示get方式、1表示post方式、2表示head(这个不知道啥意思)。

这个时候要耐心等,在OK之后会返回HTTP的状态。我的状态如下:

看到“200”了吗?这说明访问成功了。那个“0”表示你的访问方式,刚才我们用get去访问的。那最后的那个“30188”是什么呢?恩,它是DataLen,也就是用字节表示的网页的内容的长度。

好吧,那怎么获取网页的内容呢?AT+HTTPREAD指令现在登场。

(5)AT+HTTPREAD=1,30188:读取HTTP相应数据。1表示从第一个字节开始读,读30188个字节。

如果我们操作正确、且我们知道HTML是什么的话,我们会惊讶的发现,网页的内容被读出来了。哈哈哈哈!

(6)AT+HTTPTERM:访问完了,记得终止HTTP服务啊。

(7)AT+SAPBR=0,1:最后别忘记关闭承载。

OK,这样,我们就实现了SIM900A通过GET方式访问网页的问题。

当然,这是非常简单的操作。我们肯定会遇到这样那样的问题,比如:

(1)AT+HTTPREAD指令最多能读出102400字节的数据,那如果某个网页返回的数据量超过了102400该怎么办?

(2)怎么通过POST方式提交数据?

等等......

慢慢来吧,总会有方法的。我先开班会去了。

时间: 2024-08-27 19:34:20

SIM900A访问HTTP的简单方法的相关文章

vb-跨域访问网页最简单方法,获得特定的frame进行处理

以下三种方法所用时间为130,82,28 微秒(一秒=100万微秒,=1000毫秒,1毫秒=1000微秒) Private Sub Command1_Click() Dim Doc2 As HTMLDocument Dim Web2 As WebBrowser_V1 Set Web2 = GetFrameIframeLikeUrl(WebBrowser1.Document, "*baidu.com*") Set Web2 = GetFrameLikeUrl(WebBrowser1.Do

opencv2中访问像素的简单方法

利用Mat的step[0],step[1]访问像素的行列,自定义一个宏CV_MAT_ELEM2(src,dtype,y,x),src是待访问的Mat,dtype是src的数据类型(int,float,char等), 访问像素位置是y行.x列. 宏定义如下: #define CV_MAT_ELEM2(src,dtype,y,x) \ (dtype*)(src.data+src.step[0]*y+src.step[1]*x)演示代码如下所示: #include <iostream> #inclu

Webbrowser控件判断网页加载完毕的简单方法 (转)

摘自:http://blog.csdn.net/cometnet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,Webbrowser控件会通过触发DocumentCompleted事件来指示网页加载完毕.但当加载的网页包含frame时,可能会多次触发该事件,所以不能简单地通过它来判断网页加载完毕. 从微软的官方网站上了解到,并非每个frame都对应了一个DocumentCompleted事件,只有触发了Down

C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm

这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对PostGreSQL只是一知半解,记录这个过程是希望如果以后微软技术方向的人遇到类似的需求,可以有个比较直接的的参考. 在不熟悉的知识领域里,总是有搜索引擎可以帮到我. 初步了解PostGreSQL数据库及数据形态 首先我想看看PostGreSQL的数据库以及我想要获取的数据形态是什么样子的,Linux和P

[转]PHP实现页面静态化的超简单方法

为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法.(纯静态,伪静态还是需要PHP解释器的) 3.生成静态URL利于SEO,利于蜘蛛抓取和收录,有利于提升排名 优化页面响应时间方法 1.动态页面静态化 2.优化数据库 3.负载均衡 4.使用缓存等等 //动态页面静态化一般用于不经常改动的地方,频繁改动的地方一般不适用静

DataAccess通用数据库访问类,简单易用,功能强悍

以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展datarow转实体类,也可以搭配dapper.net实现更强大的功能. /// <summary> /// 通用数据库访问类,支持多种数据库,无直接依赖某个数据库组件 /// 作者:左文俊 /// 日期:2016-6-3 /// </summary> public class DataAc

python高级编程之访问超类中的方法:super()

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #超类01 #它是一个内建类型,用于访问属于某个对象超类特性 print super#<type 'super'> #如果已习惯于通过直接调用父类将self作为第一参数来访问的特性,可能会出现混乱 #经典方法 class M(object): def s(self): print u'不是超类方法' class S(M): def s(self): M.s(sel

连接访问数据库的技术方法

几种数据库连接方式优缺点比较 访问接口 易用性 运行能力 可扩展性 技术层次 突出特点 ODBC 差 较高 差 底层 可进行底层控制 MFC ODBC 好 一般 高层 同用标准,应用广泛 MFC DAO 好 较高 一般 高层 访问JET性能最好 OLE DB 很难 高 好 底层 可访问非关系型数据库 ADO 最好 高 好 高层 可访问非关系型数据库,有多种编程接口 ODBC 是一种底层的访问技术,因此,ODBC API 可以是客户应用程序能从底层设置和控制数据库,完成一些高级数据库技术无法完成的

Ubuntu系统安装VMware Tools的简单方法

不少网友反映在VMWare虚拟机下安装Ubuntu系统后无法安装VMware Tools,这里给出一个简单方法,只需要几步即可解决. 第一步:进入系统后,点击虚拟机上的安装vmware tools,回到桌面回看到一个vmware tools的cdrom图标. 第二步:打开它,复制“vmwaretools....tar.gz”,打开文件系统,打开home文件夹,打开当前用户为名的文件夹,粘贴vmwaretools....tar.gz,同时解压此文件“到此处”. 第三步:在此文件夹空白处点击右键,点