基于华为物联网的app开发-接口管理开发
物联网
浏览:738 次
在上一篇文章中,我介绍了物联网中应用端SDK的封装,它主要基于华为物联网应用端封装,以便在应用系统中调用。app端SDK的封装是所有app开发的基础,但华为没有提供相应的解决方案NET,但SDK都基于Web API的JSON数据进行交互,因此实施华为NET SDK需要一些时间。本文描述了如何在物联网应用端开发基于封装SDK的界面管理,以管理物联网业务数据。
1.app端SDK打包审查
应用端的开发接口一般提供云平台上不同平台的SDK,如阿里云开源提供的Java SDK/C#SDK;华为提供Java、PHP和其他SDK,这些SDK不包含在Net中。华为物联网云的应用端API接口包括:
形象
形象
基于相应app端API接口的定义,我们使用C#封装相应的接口。
形象
它包括测试接口项目、SDK封装接口项目以及订阅消息推送接口的解析和处理,如新设备、设备信息更改、设备绑定激活等。
对于事件通知,我们通常在app端被动地处理它们,因此我们需要转换和处理它们的消息。
形象
与在管理后台订阅这些事件类似,这些事件在触发后将被推送到app服务器。
形象
2.接口的测试和使用
根据物联网应用端API的定义,我们编写了Winform程序来快速测试SDK的工作状态,如获取授权信息、查询产品、注册设备、修改设备、获取设备状态和详细信息等接口是否正常,然后将它们集成到Webapp中,以减少返工调试问题。
根据业务接口的分类测试,我们编写了以下程序来测试相应的SDK接口。
形象
在使用SDK接口之前,我们需要知道,华为IOT的API接口基本上都需要证书对接,这与我们开发的微信API不同。例如,我们的Winform测试程序在Cert目录中有一个证书文件,可以在API的Demo中找到,也可以在华为IOT平台上下载。
形象
我们最后使用证书文件cert/outputing.CertwithKey.pkcs12。
当我们创建HTTPRequest对象以获取数据时,我们需要指定这个证书,如下所示。
帮手ContentType=“application/json”;
帮手ClientCertificates=新的X509CertificateCollection(){新的X509Certificate2(Constants.CertFilePath,Constants.CertPassword)};
另一部分是API接口封装的调用测试。
例如,第一个是授权测试,用于获取AccessToken。这是调用其他接口的前提条件。
private void btnLogin_Click(对象发送方,EventArgs e)
{
var result=basicApi.Authentication();
安慰WriteLine(result!=null?“AccessToken:”+result.ToJson():“获取结果时出错”);
if(结果!=空)
{
var refreshResult=basicApi.RefreshToken(result.RefreshToken);
安慰WriteLine(refreshResult!=null?“AccessToken:”+refreshResult.ToJson():“获取结果时出错”);
这accessToken=refreshResult.accessToken;//使用记录
}
}
许多华为物联网接口没有集成,有些是,有些是。就授权而言,可以获得接口的另一个版本,两个接口获得的令牌可以通用。
var url=常量。AppBaseUrl+“/iocm/app/sec/v1.1.0/login”;
var url=常量。AppBaseUrl+“/api/v3.0/auth/令牌”;
这两个地址可以获得AccessTokens。例如,在创建设备时,有多个不同版本的接口。
对于每个接口的封装,我们测试相关接口。例如,基于产品、产品下面的列表和其他信息,我们可以在界面测试代码中进行测试,如下所示。
///<摘要>
///产品相关接口测试
///摘要>
private void btnProduct_Click(对象发送方,EventArgs e)
{
if(string.IsNullOrEmpty(accessToken))
{
MessageUtil.ShowTips(“请验证以获取AccessToken”);
回来
}
尝试
{
var productApi=新产品Api();
var deviceApi=新数据集合Api();
//查询产品列表
var queryJson=new QueryProductJson{ownerAppId=Constants.AppId};
var结果=productApi。查询产品(accessToken,queryJson);
安慰WriteLine(result!=null?result.ToJson():“no result”);
如果(result!=空&&result.pro