android iot收发短信,Android app开发对接华为平台总结——附源码

即:JAVA SDK无法在android 平台使用,如何在android平台开发app对接OC平台

android  app开发采用的是java语言,华为关于java开发提供了一个Demo和sdk,

但是在android平台中无法使用这个SDK进行开发,原因有二:

1、SDK中的证书格式是jks,android平台不支持;在android中支持的证书格式是bks;

2、SDK中使用的是apache的http框架,该框架在android 6.0中已经废除;无法继续使用;

因此,app的开发思路如下:

参考JAVA北向Demo,将httpclient部分修改成适配android平台的,推荐使用okhttp或者httpurlconnection;

现提供基于okhttp的连接实现,给出基于okhttp的https初始化即鉴权接口,供大家参考:

package com.huawei.utils;

import android.util.Log;

import java.io.IOException;

import java.security.KeyStore;

import java.util.HashMap;

import java.util.Map;

import javax.net.ssl.KeyManagerFactory;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSocketFactory;

import javax.net.ssl.TrustManager;

import javax.net.ssl.TrustManagerFactory;

import javax.net.ssl.X509TrustManager;

import okhttp3.FormBody;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.Response;

public class HttpsUtil {

public final static String HTTPGET = "GET";

public final static String HTTPPUT = "PUT";

public final static String HTTPPOST = "POST";

public final static String HTTPDELETE = "DELETE";

public final static String HTTPACCEPT = "Accept";

public final static String CONTENT_LENGTH = "Content-Length";

public final static String CHARSET_UTF8 = "UTF-8";

private static OkHttpClient httpClient = null;

/**

* Two-Way Authentication In the two-way authentication, the client needs: 1

* Import your own certificate for server verification; 2 Import the CA

* certificate of the server, and use the CA certificate to verify the

* certificate sent by the server; 3 Set the domain name to not verify

* (Non-commercial IoT platform, no use domain name access.)

* */

public void initSSLConfigForTwoWay() throws Exception {

// 1 Import your own certificate

KeyStore selfCert = KeyStore.getInstance("pkcs12");

selfCert.load(Constant.SelfCertIn, Constant.SELFCERTPWD.toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");

kmf.init(selfCert, Constant.SELFCERTPWD.toCharArray());

// 2 Import the CA certificate of the server,

KeyStore caCert = KeyStore.getInstance("BKS");

caCert.load(Constant.TrustCAIn, Constant.TRUSTCAPWD.toCharArray());

TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");

tmf.init(caCert);

//llb add for ignor CA verify

X509TrustManager truseAllManager = new X509TrustManager() {

@Override

public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)

throws java.security.cert.CertificateException {

}

@Override

public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)

throws java.security.cert.CertificateException  {

}

@Override

public java.security.cert.X509Certificate[] getAcceptedIssuers() {

return new java.security.cert.X509Certificate[0];

//return null

}

};

//llb end

SSLContext sc = SSLContext.getInstance("TLS");

sc.init(kmf.getKeyManagers(), new TrustManager[] { truseAllManager }, null);

SSLSocketFactory sslSock = sc.getSocketFactory();

// 3 Set the domain name to not verify

try {

httpClient = new OkHttpClient.Builder()

.hostnameVerifier(new DefaultHostnameVerifier())

.sslSocketFactory(sslSock, truseAllManager)

.build();

} catch (Exception e) {

Log.e("okhttp init err:",e.toString());

}

}

//鉴权接口

public void Login(String httpsUrl){

FormBody formBody = new FormBody.Builder()

.add("appId",Constant.APPID)

.add("secret",Constant.SECRET)

.build();

Request request = new Request.Builder().url(httpsUrl).post(formBody).build();

new Thread(new Runnable() {

@Override

public void run() {

try {

Response response = httpClient.newCall(request).execute();

String resLogin = response.body().string();

if (response.isSuccessful()) {

Log.i("LogInRsp",resLogin);

} else {

throw new IOException("Unexpected code " + response);

}

Map data = new HashMap<>();

data = JsonUtil.jsonString2SimpleObj(resLogin, data.getClass());

String accessToken = data.get("accessToken");

Log.i("Token",accessToken);

} catch (IOException e) {

e.printStackTrace();

}

}

}).start();

}

}

由于app刚开始编写,待完善后再开源!

Android应用源码安卓源码(172个合集),可以做为你的学习参考。 365MobileSecretary v1.0.6(365手机助手AIDL) 888个经典 Logo.rar AdXmpp(Openfire+asmack+spark) .zip AidlDemo(简单aidl的例子) aidl跨进程调用.rar andbatdog电池监控.rar andbatdog监视电池.rar andricoFacebook客户端.rar Android Gamex分析报告.rar Android 英语单词记忆程序源码 AndroidPdfViewerPDF查看器.zip AndroidPlayer(仿酷狗播放器).tar androidtalk_2010_11_17【Sundy系列】全看懂了-加两年经验-语音朗读-语音识别-语音.rar Android下的信息客户端 WhisperSystems-TextSecure.zip Android与js交互.rar Android中监听电话状态.rar Android之Wifi学习教程.rar Android之用PopupWindow实现弹出菜单.rar android在wifi下手机与电脑的socket通信.rar android多线程断点下载.rar Android手机一键Root原理分析.zip Android手机的VoIP客户端 Sipdroid.rar Android有未接来电后处理(判断未接来电).rar Android模仿乐淘的应用程序分析源码.zip Android游戏源码——忍者快跑.rar Android自动发送短信.rar Android自动开关机实现.rar Android视频采集+RTSP完整代码(可用) Android远程登录含有loading登录效.zip Angle v1.0_2D游戏引擎.ZIP BOOK看遍所有UI控件.7z BrewClock闹钟.zip BTAndroidWebViewSelection(webview选择文字) cellmap v2.0 基站查询定位导航系统 .rar DialogShow.rar dialog去除边框代码.rar DocumentViewer(PDF阅读器) douBanList(滚动到底部加载新的,软缓存,懒加载) Droid Wall 手机防火墙.zip FBReader修改epub快速加载.rar FiveChess五子棋.zip Flashlight灯光.zip GetSDTree(简单SD卡文件浏览器) hotel宾馆系统.zip ImageView 图片循环跑马灯的效果.rar ipcamera-for-android 手机变成IP Camera.rar jamendo-开源在线音乐.rar jchat4android手机聊天程序.rar LoginXml.rar MineSweeper由java实现.zip miniTwitter登录界面.rar MyAppWeixin(仿微信界面) MyBrowser(简单网页浏览器) Myjob3(图片剪辑功能).rar OPENG开发的示例代码.rar OpenSudoku一个简单的九宫格数独游戏.zip OssSystem(OA系统图书管理简单版).rar Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.rar ProgressBar 几乎全部的用法.rar QQ_UI之分类菜单DEMO.zip QQ的登录界面 源代码 .zip quitesleep手机电话功能软件.rar rokon_src_2-0-3_游戏引擎.zip scientific-calculator-for-android( 功能强大的科学计算器).zip SeeJoPlayer(播放器).7z SipDroid客户端源码.rar sipdroid语音及视频通话.rar tablelogin(登陆界面).rar TankWar坦克大战.zip telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器) TorProxy应用实现了Android手机无线电电传通讯(TOR).rar UI设计之 仿做蘑菇街UI设计 源码.zip ViewPager-实现左右两个屏幕的切换.rar VIEW双缓冲与SurfaceView比较.zip weibo4andriod-2011-01-14.zip WordPress for Android zirco-browser浏览器源码.rar Zirco-browser:超越海豚的开源浏览器.rar zz-doctor中医大夫助
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值