一种基于Andorid实现HTTPS安全请求的方法与流程

专利2022-06-29  101


本发明基于互联网门店系统平台,特别涉及一种基于andorid实现https安全请求的方法。



背景技术:

早期的网络大都采用的是http传输,而http协议是没有加密的明文传输协议,如果app采用http传输数据,则会泄露传输内容,可能被中间人劫持,修改传输的内容。最典型的apphttp通信就是被运营商劫持修改,插入广告。

如今,各大厂商都意识到这个问题,因此,https也就应运而生。https是httpoverssl/tls,http是应用层协议,tcp是传输层协议,在应用层和传输层之间,增加了一个安全套接层ssl/tls,完美解决了http传输不安全的问题。

本发明在以android为平台的基础上,将项目中导入的ssl证书转化为数据流,再通过certificatefactory工厂类将其转化为socketfactory对象,设值到okhttpclient对象中,当使用post方法请求服务器时,自动验证网络安全,从而解决了在android中使用http请求不安全的问题。



技术实现要素:

本发明解决的技术问题在于提供一种基于andorid实现https安全请求的方法;本发明实现了app使用https协议请求网络更加安全的方法,解决了http协议不安全的问题。

本发明解决上述技术问题的技术方案是:

一、在项目中引入请求网络所需的jar包以及配置权限信息;二、创建raw文件夹,导入证书;三、创建baseactivity,覆写创建方法;四、定义数据流,在创建方法中初始化;五、创建网络工具类,初始化okhttpclient,添加ssl验证;六、创建事件类,用来解析获取结果;七、实现post方法;八、请求后通过回调函数获取结果信息,封装到event对象中并使用eventbus进行推送;九、在activity中使用线程方法接收请求结果。

所述的方法具体包括如下步骤:

步骤一、引入请求网络所需的jar包,所需的jar包有:okhttp:2.0.0、eventbus:2.2.1以及okhttp-urlconnection:2.0.0等。

步骤二、配置权限信息,具体所需权限有:permission.access_wifi_state、permission.access_network_state、permission.internet等。

步骤三、在res文件夹下创建raw文件夹,导入证书。

步骤四、创建baseactivity,覆写oncreate方法。

步骤五、定义数据流,在oncreate方法中初始化,所述的数据流主要通过getresources().openrawresource(r.raw.xinye)方法从raw文件夹中获取。

步骤六、创建网络工具类,初始化okhttpclient,添加ssl验证;所述具体实现过程如下:

(1)在工具类中定义静态okhttpclient对象mokhttpclient;

(2)创建getsocketfactory(inputstreaminputstream)方法,获取sslsocketfactoryssl协议的安全套接字工厂类对象;

(3)使用单例模式初始化mokhttpclient,将上述方法所获取的对象设值到mokhttpclient对象中;

(4)在baseactivity中的oncreate方法中初始化;如:

okhttpclientmokhttpclient=apphttpclient.getinstance(inputstream)。

步骤七、实现post方法,所述的post方法实现具体步骤如下:

(1)所需的参数有:inputstream输入流、string类型的url、map类型的键值对参数、callback回调等;

(2)通过单例方法getinstance(inputstream)获取okhttpclient对象client;

(3)创建formencodingbuilder对象,将map参数中的值添加到对象中,然后通过formencodingbuilder.build()方法创建requestbody对象;

(4)通过newrequest.builder().url(url).post(requestbody).build()方法创建request对象;

(5)通过client.newcall(request).enqueue(callback)方法发起post请求。

步骤八、请求后通过回调函数获取结果信息,封装到event对象中并使用eventbus进行推送,所述的使用回调函数返回结果实现如下:

第一步,创建callback接口;

第二步,在接口中创建onfailure(requestrequest,ioexceptione)与onresponse(responseresponse)方法;

第三步,在调用post方法中实现回调接口中的onfailure方法与onresponse方法,分别将请求后的结果添加到event对象中,最后使用eventbus.getdefault().post(event)推送到activity或fragment中;

步骤九、在activity中使用线程方法接收请求结果。

本发明的有益效果:以android为平台的基础上,将项目中导入的ssl证书转化为数据流,再通过certificatefactory工厂类将其转化为socketfactory对象,设值到okhttpclient对象中,当使用post方法请求服务器时,自动验证网络安全,从而实现了使用https协议请求网络更加安全的目的。有效地解决了在android中使用http请求不安全的问题。

附图说明

下面结合附图对本发明进一步说明:

图1为本发明的流程图。

具体实施方式

如图1所示,本发明采用如下步骤:

步骤一、引入请求网络所需的jar包,所需的jar包有:okhttp:2.0.0、eventbus:2.2.1以及okhttp-urlconnection:2.0.0等。

步骤二、配置权限信息,具体所需权限有:permission.access_wifi_state、permission.access_network_state、permission.internet等。

步骤三、在res文件夹下创建raw文件夹,导入证书。

步骤四、创建baseactivity,覆写oncreate方法。

步骤五、定义数据流,在oncreate方法中初始化,所述的数据流主要通过getresources().openrawresource(r.raw.xinye)方法从raw文件夹中获取。

步骤六、创建网络工具类,初始化okhttpclient,添加ssl验证;所述具体实现过程如下:

(1)在工具类中定义静态okhttpclient对象mokhttpclient;

(2)创建getsocketfactory(inputstreaminputstream)方法,获取sslsocketfactoryssl协议的安全套接字工厂类对象;如:

publicstaticsslsocketfactorygetsocketfactory(inputstreaminputstream){

try{

certificatefactorycertificatefactory=certificatefactory.getinstance("x.509");

keystorekeystore=keystore.getinstance(keystore.getdefaulttype());

keystore.load(null);

keystore.setcertificateentry("0",certificatefactory.generatecertificate(inputstream));

if(inputstream!=null){

inputstream.close();

}

sslcontextsslcontext=sslcontext.getinstance("tls");

returnsslcontext.getsocketfactory();

}catch(exceptione){

e.printstacktrace();

}

returnnull;

}

(3)使用单例模式初始化mokhttpclient,将上述方法所获取的对象设值到mokhttpclient对象中;如:

publicstaticokhttpclientgetinstance(inputstreaminputstream){

if(mokhttpclient==null){

mokhttpclient=newokhttpclient();

mokhttpclient.setsslsocketfactory(getsocketfactory(inputstream));

}

returnmokhttpclient;

}

(4)在baseactivity中的oncreate方法中初始化;如:

okhttpclientmokhttpclient=apphttpclient.getinstance(inputstream)。

步骤七、实现post方法,所述的post方法实现具体步骤如下:

(1)所需的参数有:inputstream输入流、string类型的url、map类型的键值对参数、callback回调等;

(2)通过单例方法getinstance(inputstream)获取okhttpclient对象client;

(3)创建formencodingbuilder对象,将map参数中的值添加到对象中,然后通过formencodingbuilder.build()方法创建requestbody对象;

(4)通过newrequest.builder().url(url).post(requestbody).build()方法创建request对象;

(5)通过client.newcall(request).enqueue(callback)方法发起post请求。

步骤八、请求后通过回调函数获取结果信息,封装到event对象中并使用eventbus进行推送,所述的使用回调函数返回结果实现如下:

第一步,创建callback接口;

第二步,在接口中创建onfailure(requestrequest,ioexceptione)与onresponse(responseresponse)方法;

第三步,在调用post方法中实现回调接口中的onfailure方法与onresponse方法,分别将请求后的结果添加到event对象中,最后使用eventbus.getdefault().post(event)推送到activity或fragment中;如:

publicstaticvoidpost(inputstreaminputstream,stringurl,map<string,string>params,finaleventevent){

post(inputstream,url,params,newcallback(){

@override

publicvoidonfailure(requestrequest,ioexceptione){event.setresulttype(basehttpevent.request_failure);

eventbus.getdefault().post(event);

}

@override

publicvoidonresponse(responseresponse)throwsioexception{

stringresultjson=response.body().string();

event.setresultjson(resultjson);

event.setresulttype(basehttpevent.request_success);

//在activity里发送一个更改界面的事件信号

eventbus.getdefault().post(event);

}

});

}。

步骤九、在activity中使用线程方法接收请求结果,如:

publicvoidoneventmainthread(ordereventevent){

if(event.isrequestsuccess()){

orderentitydata=event.getdata();

}

}。


技术特征:

1.一种基于andorid实现https安全请求的方法,其特征在于:一、在项目中引入请求网络所需的jar包以及配置权限信息;二、创建raw文件夹,导入证书;三、创建baseactivity,覆写创建方法;四、定义数据流,在创建方法中初始化;五、创建网络工具类,初始化okhttpclient,添加ssl验证;六、创建事件类,用来解析获取结果;七、实现post方法;八、请求后通过回调函数获取结果信息,封装到event对象中并使用eventbus进行推送;九、在activity中使用线程方法接收请求结果。

2.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:引入请求网络所需的jar包,所需的jar包有:okhttp:2.0.0、eventbus:2.2.1以及okhttp-urlconnection:2.0.0等。

3.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:配置权限信息,具体所需权限有:permission.access_wifi_state、permission.access_network_state、permission.internet等。

4.根据权利要求4所述的一种基于andorid实现https安全请求的方法,其特征在于:在res文件夹下创建raw文件夹,导入证书。

5.根据权利要求4所述的一种基于andorid实现https安全请求的方法,其特征在于:创建baseactivity,覆写oncreate方法。

6.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:定义数据流,在oncreate方法中初始化,所述的数据流主要通过getresources().openrawresource(r.raw.xinye)方法从raw文件夹中获取。

7.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:创建网络工具类,初始化okhttpclient,添加ssl验证;所述具体实现过程如下:

第一步,在工具类中定义静态okhttpclient对象mokhttpclient;

第二步,创建getsocketfactory(inputstreaminputstream)方法,获取sslsocketfactoryssl协议的安全套接字工厂类对象;

第三步,使用单例模式初始化mokhttpclient,将上述方法所获取的对象设值到mokhttpclient对象中;

第四步,在baseactivity中的oncreate方法中初始化。

8.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:实现post方法,所述的post方法实现具体步骤如下:

第一步,所需的参数有:inputstream输入流、string类型的url、map类型的键值对参数、callback回调等;

第二步,通过单例方法getinstance(inputstream)获取okhttpclient对象client;

第三步,创建formencodingbuilder对象,将map参数中的值添加到对象中,然后通过formencodingbuilder.build()方法创建requestbody对象;

第四步,通过newrequest.builder().url(url).post(requestbody).build()方法创建request对象;

第五步,通过client.newcall(request).enqueue(callback)方法发起post请求。

9.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:请求后通过回调函数获取结果信息,封装到event对象中并使用eventbus进行推送,所述的使用回调函数返回结果实现如下:

第一步,创建callback接口;

第二步,在接口中创建onfailure(requestrequest,ioexceptione)与onresponse(responseresponse)方法;

第三步,在调用post方法中实现回调接口中的onfailure方法与onresponse方法,分别将请求后的结果添加到event对象中,最后使用eventbus.getdefault().post(event)推送到activity或fragment中。

10.根据权利要求1所述的一种基于andorid实现https安全请求的方法,其特征在于:在activity中使用线程方法接收请求结果,所述的线程方法如下:publicvoidoneventmainthread(eventevent){}。

技术总结
本发明基于Android平台,特别涉及一种基于Andorid实现HTTPS安全请求的方法:一、在项目中引入请求网络所需的jar包以及配置权限信息;二、创建raw文件夹,导入证书;三、创建BaseActivity,覆写创建方法;四、定义数据流,在创建方法中初始化;五、创建网络工具类,初始化OkHTTPClient,添加ssl验证;六、创建事件类,用来解析获取结果;七、实现post方法;八、请求后通过回调函数获取结果信息,并使用EventBus进行推送;九、在Activity中使用线程方法接收请求结果。本发明实现了App使用HTTPS协议请求网络更加安全的方法,解决了HTTP协议不安全的问题。

技术研发人员:陈林;张来卿;庞严冬
受保护的技术使用者:珠海横琴盛达兆业科技投资有限公司
技术研发日:2018.12.03
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-19663.html

最新回复(0)