由于最近涉及到的项目需要在与后台通信时,需要加解密,而后台发出来得Json是通过Encode加密了的,所以在接受后,需要在ios中用stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding方法来解密成UTF8。当然同样的,我需要发送请求给后台时,用stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding来加密。

iOS:接受--->解密---->加密:

- (void)reloadData

{

NSURL *url = [NSURL URLWithString:@"http://cqzjt.com:8081/testapp/servlet/Appinfo"];

NSString *post=@"postData";

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"POST"];

[request setHTTPBody:postData];

[request setTimeoutInterval:10.0];

NSOperationQueue *queue = [[NSOperationQueue alloc]init];

[NSURLConnection sendAsynchronousRequest:request

queue:queue

completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){

if (error) {

NSLog(@"Httperror:%@%d", error.localizedDescription,error.code);

}else{

NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode];

NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"HttpResponseCode:%d", responseCode);

NSLog(@"接受加密数据 %@",responseString);

NSString *decodeUrl = [responseString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"解密数据:%@",decodeUrl);

NSString *encodeUrl = [decodeUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"加密数据:%@",encodeUrl);

}

}];

}

输出结果:

JAVA:加密-->解密:

public void setEncodeResult(String encodeResult)

{

char[] src = encodeResult.toCharArray();//将待编码字串拆分成字符数组

StringBuilder sb = new StringBuilder();//保存编码后字符

//将待编码字串拆分成字符数组

for(int i = 0; i< src.length; i++)

{

if(Character.isDigit(src[i]))

{

if(i != src.length-1)

{//满足条件3

char[] temp = new char[Character.getNumericValue(src[i])+1];

Arrays.fill(temp,src[i+1]);

sb.append(temp);

sb.append("_");

}

else

{//满足条件2

sb.append(src[i]);

}

}

else if(src[i] == '_')//满足条件5

{

sb.append("\\UL");

sb.append("_");

}

else if(i == src.length-1)//满足条件1,且到了字串结尾

{

sb.append(src[i]);

}

else//满足条件1,且未到字串结尾

{

sb.append(src[i]);

sb.append("_");

}

}

this.encodeResult = new String(sb);//创建返回编码后字串

}

//获得编码后结果

public String getEncodeResult()

{

return encodeResult;

}

//解码设置

public void setDecodeResult(String encodeResult)

{

String[] temp = encodeResult.split("_");

StringBuilder sb = new StringBuilder();

for(int i = 0; i< temp.length; i++)

{

if(temp[i].equals("\\UL"))

sb.append("_");

else if(temp[i].length()>1)

sb.append(temp[i].length()-1);

else

sb.append(temp[i]);

}

this.decodeResult = new String(sb);

}

//获得解码后结果

public String getDecodeResult()

{

return decodeResult;

}

public static void main(String[] args)

{

System.out.println("请输入待编码字符串(以回车键结束):");

String source = "";

try

{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

source = br.readLine();

}

catch (IOException e)

{

e.printStackTrace();

}

Encode e = new Encode();

e.setEncodeResult(source);

System.out.println("编码后结果:"+e.getEncodeResult());

e.setDecodeResult(e.getEncodeResult());

System.out.println("解码后结果:"+e.getDecodeResult());

}

}

[2014-03-20]iOS与JAVAnbsp;通信时Enco…相关推荐

  1. 2014.03.20入职第四天

    2019独角兽企业重金招聘Python工程师标准>>> 1.今天配置了git 安装了copSSH,目前还不懂0.2Start a unix bash shell的使用方法 今天晚上研 ...

  2. 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

    一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解React Native与iOS之间的通信交互. 本篇主要分为两部分讲解:(关于其中讲解的OC语法等不介绍,不懂的请自行 ...

  3. 【2014最新】iOS App 提交上架store 详细流程

    [2014最新]iOS App 提交上架store 详细流程 一.证书的导出 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开http://develope ...

  4. 第20章 JavaScript通信

    第20章 JavaScript通信 在传统Web开发中,客户端与服务器端通信主要通过同步请求(页面刷新)来实现,当客户端向服务器端发出HTTP请求之后,服务器端接收并处理这个请求,然后响应完整的Web ...

  5. 20.串行口通信原理及操作流程

    c 第六章:串行口通信原理及操作流程 6.1并行与串行基本通行方式 单片机通信是指单片机与计算机或单片机与单片机之间的信息交换,后者的通信通常用的较多. 通信有并行和串行龄种方式,在单片机系统以及现代 ...

  6. 《Java编程周末提高班(第一期)》写在第二周——在路上…… 2014.03.22

    又是周六,今天一共来了8个学生:6个上周六来过的学生,以及两个上周请假第一次来的学生.有进步,下周六可能有9个学生过来,基本上也达到了家里容纳学生学习的最大榕人数(10人). 总的学习时间在7个小时: ...

  7. 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提 成7.5%;20万到40万之间时,

    /*企业发放的奖金根据利润提成.利润I低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提 成7.5%:20万到40万之间 ...

  8. 为什么获取crm服务器信息失败,为 Outlook 配置 Microsoft Dynamics CRM 客户端时出现 与 Microsoft Dynamics CRM 服务器通信时出现问题 错误...

    症状 当您尝试配置 microsoft Office Outlook 的 Microsoft Dynamics CRM 客户端时,收到以下错误消息: 与 Microsoft Dynamics CRM ...

  9. 进程在与Windows Process Activation Service通信时出现严重错误 w3wp.exe错误

    标题是两个问题  出现时间是一样的  先有进程在与Windows Process Activation Service通信时出现严重错误  然后事件查看器里就会出现w3wp.exe错误 问题的后果就是 ...

最新文章

  1. android 怎么判断activity 从哪里启动的
  2. paddlepaddle系列之三行代码从入门到精通
  3. php gzip乱码,php file_get_contents抓取Gzip网页乱码的三种解决方法
  4. python找思路_python 爬取贝壳的一些思路和方法设计(用地址找到小区名字)
  5. 深度学习入门笔记(四):神经网络
  6. shell脚本中执行命令_如何在Shell脚本中执行命令?
  7. slim.conv2d以及slim.convolution2d与tf.nn.conv2d的不同
  8. BottomBar之Android底部菜单
  9. Haar特征计算过程【DataWhale学习记录】
  10. nvme分区选mbr还是guid_老毛桃winpe的DiskGenius分区工具使用说明
  11. 解决C语言运行窗口一闪而过问题
  12. 任务栏-IDEA图标变白色
  13. ORA-19511 ANS1017E (RC-50) Session rejected: TCP/IP connection failure
  14. win7恢复计算机图标不见了怎么办,win7桌面图标找不到的五种恢复方法
  15. (个人)太极拳学习系统创新实训第一周(一)
  16. Git runner安装
  17. 什么是DBMS以及DBMS的分类
  18. matlab 指纹,一种基于matlab的指纹识别方法
  19. 成为智者的四个敌人——唐望
  20. 备战秋招-oppo java一面 面经

热门文章

  1. 年薪百万的阿里P9 Python专家快速带你入门Python
  2. 最新版本Redis:Redis 7.0 安装使用,编译安装Redis,Redis使用场景-2022年最新Redis图解安装
  3. JAVA花布的特点_印花布是什么 印花布面料的特点
  4. ES的索引库(数据表)基础操作 —— 增删改查API版
  5. DownloadManager+NumberProgressBar+Executors线程池实现多并发下载APK安装
  6. 【Java日期时间】@JsonFormat与@DateTimeFormat注解的区分和使用
  7. 教你如何将SolidWorks草图导出成CAD图纸
  8. 比较两个字符串的大小(C)
  9. Nginx代理内网服务器访问外网
  10. 个.十.百.千.万.亿.兆,后面是什么单位?