经过重庆电信智慧总部这一个项目后,总结了做这个项目大量开发的协议模式http和https。
比如走电信nb平台拿取数据所采用的带证书走https方式的动态库开发,走第三方平台拿取数据的http方式开发动态库。
这些方式都有个共同点,就是根据某种规则,取得设备数据。
这些数据格式有JSON,XML,不规则字符串等。这些都不是讲解的重点;只要拿到数据,解析就顺风顺水了。
重庆公司目前对于常规的http和https开发可以做到5分钟内完成一个。
一。下面我们来快速进行拿取数据的流程讲解:
1.在项目中引用GWHTTPHelper.dll这个类库
2.在需要使用的类页面使用using指令 using GWHTTPHelper;
3.根据场景选用合适的方法去调用:
有如下三种调用方式
1.Http协议的调用方式,
2.Https协议不带证书的调用方式,
3. Https协议带证书的调用方式
4.使用方法采用静态类方法调用:
LSHHttp.HttpsUrl(参数们)
二。下面我们使用两个例子来说明
HTTP例子:
ResultData http =LSHHttp.HttpsUrl(“www.weather.com.cn/data/sk/101041200.html”, “”, null,"GET", “application/x-www-form-urlencoded”, true);
一。这个例子说明了:
我们要访问www.weather.com.cn/data/sk/101041200.html这个网址,采用GET方式访问,默认编码格式的请求参数,application/x-www-form-urlencoded,http类型。
二。下面我们对参数进行详细解释:
参数说明(按顺序):
参数一:访问的url地址
参数二:请求的参数(没有写则填写“”)
参数三:请求头参数,没有填写null;
参数四:请求方式get或者post
参数五:请求编码的格式键值对形式填写application/x-www-form-urlencoded,无参数可以不填写
Json请求参数形式填写application/json
参数六:通信协议http或者https,填写bool类型,true为http
方法调用返回值:为ResultData类型
解释ResultData:
字段:Header 响应头信息 WebHeaderCollection类型
字段:ResultString 远程服务器响应结果信息string类型
字段:Msg 接口调用状况 ok成功 no失败 string类型
字段:MsgInfo 接口调用情况 string类型
不带证书的https协议和此调用方式类似只是参数六变为了false
HTTPS带证书例子:
string apiPath = "device.api.ct10649.com:8743/iocm/app/sec/v1.1.0/login";
string body = "appId=" + "eZhYMLNSPTTk8BF1vcLEW6O03lUa"+ "&secret=" + "faF9zwbgHMA_w3lh6HT4Q2EQRs4a";
string method = "POST";
string contenttype = "application/x-www-form-urlencoded";
WebHeaderCollection headers =newWebHeaderCollection();
ResultData https = LSHHttp.HttpsUrlPlus(apiPath,body, header, method, contenttype, "D:\AlarmCenter\data\outgoing.CertwithKey.pkcs12", "IoM@1234");
参数说明(按顺序):
参数一:访问的url地址
参数二:请求的参数(没有写则填写“”)
参数三:请求头参数,没有填写null;
参数四:请求方式get或者post
参数五:请求编码的格式键值对形式填写application/x-www-form-urlencoded,无参数可以不填写
参数六:公钥证书的文件所在路径(包含文件)
参数七:访问远端服务器验证密码(配合公钥证书使用)
方法调用返回值:为ResultData类型
解释ResultData:
字段:Header 响应头信息 WebHeaderCollection类型
字段:ResultString 远程服务器响应结果信息string类型
字段:Msg 接口调用状况 ok成功 no失败 string类型
字段:MsgInfo 接口调用情况 string类型
作者--雷斯寒
2019-05-27完成
期待大家多多提意见多大交流,共同成长进步
我的联系方式qq:1607797998。
想要进行动态库使用的,我过几天会发布到服务器上,供大家下载,目前可以联系我获取动态库。
网友评论