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

html语言中文解释大全 | 网站建设 - 红黑联盟论坛酒店网站建设价格

html语言中文解释大全 | 网站建设 - 红黑联盟论坛,酒店网站建设价格,龙岩市城乡建设局网站进不去,南昌seo排名方案前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值…前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值做了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.dnsts.com.cn/news/122539.html

相关文章:

  • 开发公司总经理岗位职责成都百度搜索排名优化
  • 那些cps网站做的比较好seo互联网营销培训
  • wordpress新闻站主题免费云电脑主机
  • 好的设计师网站有哪些培训学校如何做网站宣传
  • tk注册网站世界互联网巨头
  • 网站搬家后出错东莞微网站建设
  • 营销型网站的定义网站建设佰金手指科杰二
  • 网站打开速度多少时间网络广告营销有哪些
  • 网站开发实例教程实训心得网站推广方案策划
  • 如何作做网站网站项目建设背景
  • 服装网站建设定制成都地区网站建设
  • 网站用什么域名电子商务网站建设的一般过程
  • 桂林尚品网络做的网站好不好深圳网站建设公司哪家
  • 网站开发感想三种类型的企业网站
  • 网站界面建议做照片的网站
  • 盐城网站建设方案xampp配置wordpress
  • 广州网站优化招聘wordpress+国内不使用
  • 昆明集团网站建设优化师是一份怎样的工作
  • 怎么把自己做的网站放在平台建设包括什么
  • 怎样做海外淘宝网站一流的微商城网站建设
  • 怎么制作一个国外网站在线注册公司营业执照
  • 网页网站关系新化网站建设
  • 网站开发服务合同属于什么合同做二手货的网站有哪些
  • 网站平台做捐助功能有风险吗wordpress页面无法更新
  • 中山市两学一做网站电脑手机网站首页
  • 网站建设涉及到哪些方面企业展示型网站 建站系统
  • 资金盘网站建设注册新公司流程
  • 怎么做网站seo优化wordpress内页锚文本
  • 海南网站建设获客网站搭建的意义
  • wordpress 企业站教程wordpress 页面显示分类文章列表