当前位置: 首页 > news >正文

保险公司招聘网站武夷山景区网站建设优点

保险公司招聘网站,武夷山景区网站建设优点,西安做网站朋朋网络,电商app制作费用一览表前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值…前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值做了RSA AES加密 需求大概是这样 下面看下代码实现逻辑 实现 在网络框架的配置类里添加加密拦截器 HttpsUtils.SSLParams sslParams HttpsUtils.getSslSocketFactory();OkHttpClient.Builder mOkHttpBuilder new OkHttpClient.Builder().connectTimeout(CONN_TIME_OUT, TimeUnit.SECONDS).readTimeout(READ_TIME_OUT, TimeUnit.SECONDS).writeTimeout(WRITE_TIME_OUT, TimeUnit.SECONDS).sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager).addInterceptor(new EncryptionInterceptor()) //加密拦截器 统一处理解析 我的业务场景是 前期的 登陆 发验证码 认证 接口不需要做加密 所以我需要在加密拦截器前期做单独处理 //认证接口不处理加密需求if (url.encodedPath().equals(xxx/auth)) {return chain.proceed(request);}//登陆和验证码都是get接口所以在这里统一拦截 if (method.equals(get) || method.equals(delete)) {return chain.proceed(request);}处理完特殊业务场景 就剩统一的post接口 参数统一封装成body //请求接口请求参数String param InterceptorUtils.bodyToString(request);//获取加密的keyString aesKey Hawk.get(AppCode.AES_EKY);String encryptData AESUtils.encrypt(param, aesKey);//拿到加密后的json字符串String json new Gson().toJson(new JsonRequest(encryptData));RequestBody body RequestBody.create(request.body().contentType(), json);request request.newBuilder().post(body).build();Response response chain.proceed(request);下图是加密后的参入 统一用data作为加密key-value的key用于后端解析 再来看一下返回值解密的代码实现 这里有2个点需要注意一下 对于后端返回的类型 无非是对象Object或者数组Array 2种情况 统一封装 先来看一下返回的加密格式 {code:20000,data:N1bBAjZ4m6PGGWJmu53PzSOcyjjUL0Jo3UITcEgmxYWcnBZSXKXRK81bS65JVoB8ouAuBLSSQvzVxHAc/pRbdUentgpppoe8wfhKvLuVu9LhVPK9y6I9/rf5nNm4h0R62ubdUNINLsi6tlj/Gn/gMPAzIoEFtVyQMQvHJ1sH4uh4as0Tnxu51aEknNc8Pm,errorId:,message:操作成功}上图中data是我们的业务返回数据 它可能是Array也可能是Object encryptData 加密字符串 //说明是数组if (encryptData ! null encryptData.startsWith([)) {JSONArray jsonArray JSONArray.parseArray(encryptData);decryptObj.setData(jsonArray);} else if (encryptData ! null encryptData.startsWith({)) {//说明是对象JSONObject jsonObject JSONObject.parseObject(encryptData);decryptObj.setData(jsonObject);}EncryptionInterceptor 实现 public class EncryptionInterceptor implements Interceptor {Overridepublic Response intercept(Chain chain) throws IOException {Request request chain.request();okhttp3.HttpUrl url request.url();String method request.method().toLowerCase().trim();//认证接口不处理加密需求if (url.encodedPath().equals(/isp/app/worker/auth)) {return chain.proceed(request);}if (method.equals(get) || method.equals(delete)) {return chain.proceed(request);}//请求接口请求参数String param InterceptorUtils.bodyToString(request);//获取加密的keyString aesKey Hawk.get(AppCode.AES_EKY);String encryptData AESUtils.encrypt(param, aesKey);//拿到加密后的json字符串String json new Gson().toJson(new JsonRequest(encryptData));RequestBody body RequestBody.create(request.body().contentType(), json);request request.newBuilder().post(body).build();Response response chain.proceed(request);return Decrypt(response);}/*** 返回值解密* param response 返回值* return response*/private Response Decrypt(Response response) {try {Response.Builder builder response.newBuilder();Response clone builder.build();//成功 判断是否等于200if (clone.code() ! 200) {return response;}ResponseBody body clone.body();if (body ! null) {MediaType mediaType body.contentType();if (mediaType ! null) {if (InterceptorUtils.isText(mediaType)) {String aesKey Hawk.get(AppCode.AES_EKY);BaseResult result new Gson().fromJson(body.string(),BaseResult.class);String encryptData AESUtils.decrypt(result.getData().toString(), aesKey);ALog.e(解密返回数据 - encryptData);BaseResult decryptObj new BaseResult();decryptObj.setCode(result.getCode());decryptObj.setErrorId(result.getErrorId());decryptObj.setMessage(result.getMessage());//说明是数组if (encryptData ! null encryptData.startsWith([)) {JSONArray jsonArray JSONArray.parseArray(encryptData);decryptObj.setData(jsonArray);} else if (encryptData ! null encryptData.startsWith({)) {//说明是对象JSONObject jsonObject JSONObject.parseObject(encryptData);decryptObj.setData(jsonObject);}String strJson new Gson().toJson(decryptObj);body ResponseBody.create(mediaType, strJson);return response.newBuilder().body(body).build();}}}} catch (Exception e) {ALog.e(解密错误: e.getMessage());}return response;} }有什么问题欢迎交流~
http://www.hkea.cn/news/14459408/

相关文章:

  • 国内网站有哪些wordpress 移除 新闻
  • 网站设计及开发中学生免费作文网站
  • 网站建设的局限性建外贸营销型网站
  • 国外做免费网站的网站开发维护成本
  • 石家庄营销型网站建设公司系统优化因素
  • 案例展示在网站中的作用深圳市建设工程交易服务网宝安分中心
  • 找别人做网站的注意事项类似于淘宝的网站建设方案
  • 对网站建设的意见和建议赚钱网
  • 房地产网站模板外发加工会计分录
  • 一台服务器做两个网站吗竹林wordpress主题
  • 网站开发 自学快速排名优化系统
  • 做网站好听的域名农村创业好项目
  • 我的世界做皮肤壁纸网站高端网站建设天软科技
  • 大网站怎样选域名网络推广好做吗?
  • 网站域名价值查询计算机网站设计论文
  • 权威行业网站建设公司汕头澄海招聘网
  • 优惠卷网站怎么做推广wordpress加skype
  • 制作logo的网站厦门短视频代运营公司
  • asp.net网站开发实例教程wordpress主题+清新
  • 广州网站建设系统国外知名平面设计网站
  • 西安网站建设网站建设视频制作图片
  • 银行网站 设计方案网站建设捌金手指花总十四
  • 东莞专业网站制作设计wordpress+主题+引入js
  • 中国古建筑网站网页设计课程期末总结
  • 平安网站建设工作总结自建域名
  • 站长工具seo综合查询 正品蓝导航搭建个网站多少钱
  • 网站怎样优化seowordpress plugins权限
  • 三种常用的网站设计软件公司网站管理规定
  • 创建本地网站网站改版销售话术
  • 网站建设找业主签字模板企业邮箱查询