Java库转oc_急急急!各位大神:一段JAVA代码转成OC代码。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
全局定义
private static final String ENCODE_TYPE = "UTF-8";
private static final String ALGORITHM = "HmacSHA1";
private static final String HTTP_METHOD = "GET";
private static final String SEPARATOR = "&";
private static final String EQUAL = "=";
准备请求参数
Map parameterMap = new HashMap();
// 请求公共参数
parameterMap.put("Action", "SearchTemplate");
parameterMap.put("Version", "2014-06-18");
parameterMap.put("AccessKeyId", "testId"); //此处请替换成您自己的AccessKeyId
parameterMap.put("Timestamp", "2015-05-14T09:03:45Z");//此处将时间戳固定只是测试需要,这样此示例中生成的签名值就不会变,方便您对比验证,可变时间戳的生成需要用下边这句替换
//parameterMap.put("Timestamp", formatIso8601Date(new Date()));
parameterMap.put("SignatureMethod", "HMAC-SHA1");
parameterMap.put("SignatureVersion", "1.0");
parameterMap.put("SignatureNonce", "4902260a-516a-4b6a-a455-45b653cf6150"); //此处将唯一随机数固定只是测试需要,这样此示例中生成的签名值就不会变,方便您对比验证,可变唯一随机数的生成需要用下边这句替换
//parameterMap.put("SignatureNonce", UUID.randomUUID().toString());
parameterMap.put("Format", "XML"); //另外支持JSON格式
使用请求参数构造规范化的请求字符串(Canonicalized Query String)
private static String percentEncode(String value) throws UnsupportedEncodingException {
return URLEncoder.encode(value, ENCODE_TYPE).replace("+", "%20").replace("*", "%2A").replace("%7E", "~");
}
private static String buildCanonicalizedQueryString(Map parameterMap) throws UnsupportedEncodingException {
// 对参数进行排序
List sortedKeys = new ArrayList(parameterMap.keySet());
Collections.sort(sortedKeys);
StringBuilder temp = new StringBuilder();
for (String key : sortedKeys) {
// 此处需要对key和value进行编码
String value = parameterMap.get(key);
temp.append(SEPARATOR).append(percentEncode(key)).append(EQUAL).append(percentEncode(value));
}
return temp.toString().substring(1);
}
计算签名(包括HMAC签名以及Base64编码)
private static String buildStringToSign(String canonicalizedQueryString) throws UnsupportedEncodingException {
// 生成stringToSign字符
StringBuilder temp = new StringBuilder();
temp.append(HTTP_METHOD).append(SEPARATOR);
temp.append(percentEncode("/")).append(SEPARATOR);
// 此处需要对canonicalizedQueryString进行编码
temp.append(percentEncode(canonicalizedQueryString));
return temp.toString();
}
private static String buildSignature(String keySecret, String stringToSign) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException {
SecretKey key = new SecretKeySpec((keySecret + SEPARATOR).getBytes(ENCODE_TYPE), SignatureMethod.HMAC_SHA1);
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(key);
byte[] hashBytes = mac.doFinal(stringToSign.toString().getBytes(ENCODE_TYPE));
byte[] base64Bytes = new Base64().encode(hashBytes);
String base64UTF8String = new String(base64Bytes, "utf-8");
return URLEncoder.encode(base64UTF8String, ENCODE_TYPE);
}
Java库转oc_急急急!各位大神:一段JAVA代码转成OC代码。相关推荐
- Java好还是网优好_大神告诉你|Java好还是Python好?
在进入主题之前,小智先分享几条大神的人生警句.醒世明言: 初学者才争论语言,我们只看心情. 还有: 选择入门语言最重要的是 "三观"相似 "臭味"相投 以及大家 ...
- java计算器 运算符优先级_跪求大神帮忙,怎样在java 计算器中实现,四则运算优先级;...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下,跪求大神补充 import java.awt.*; import java.awt.event.*; import java.awt.image ...
- 用java编写圆锥_求java大神帮忙 求大神帮助!Java
导航:网站首页 > 求java大神帮忙 求大神帮助!Java 求java大神帮忙 求大神帮助!Java 相关问题: 匿名网友: 普通类 public class CircularA { //求圆 ...
- matlab进行道格拉斯筛选,用MATLAB计算柯布道格拉斯函数,需要计算程序,急!谢谢大神...
用MATLAB计算柯布道格拉斯函数,需要计算程序,急!谢谢大神0 产值.资金.劳动力关系函数问题具体内容增加生产.发展经济所依靠的主要因素有增加投资.增加劳动力以及技术革新等,在研究国民经济产值与这些 ...
- spring3.2入门到大神(备java基础、jsp、servlet,javaee精髓)-任亮-专题视频课程
spring3.2入门到大神(备java基础.jsp.servlet,javaee精髓) 课程介绍 框架介绍,IoC思想.DI依赖注入.Bean的实例方式.Bean种类.Bean作用域 ...
- JAVA2块钱瓶子_啤酒2元一瓶,4个瓶盖换一瓶,2个空瓶换一瓶,问:10元钱可以喝几瓶。用java编程解出答案,求大神们帮忙...
点击查看啤酒2元一瓶,4个瓶盖换一瓶,2个空瓶换一瓶,问:10元钱可以喝几瓶.用java编程解出答案,求大神们帮忙具体信息 答:package test;public class Test {publ ...
- MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute
从操作配置文件properties中读取连接字符串,通过该字符串进行数据连接,需要写三个文件其中,两个是java类,一个是后缀名为.properties的文件,该文件放在src工作目录下. 需要准备的 ...
- Java 工程师,掌握这些,你离大神只差一步
1 基础篇 01 面向对象 → 什么是面向对象 面向对象.面向过程 面向对象的三大基本特征和五大基本原则 → 平台无关性 Java 如何实现的平台无关 JVM 还支持哪些语言(Kotlin.Groov ...
- Java大神推荐,java编程基础必备(必看)
在没有以前的操作习惯的错误情况下,反而容易接受新知识,所以不要因为自己对java一无所知而自卑,相反,这是菜鸟们的优势,但是如何才能从一个菜鸟历练成大神呢,当然是需要学习了,不学习就想成为大神,就是在 ...
最新文章
- 只需5行代码,手把手教你快速实现图像分割,代码逐行详解!
- 开源要“开”得安全高效:开源云计算的五大发展趋势
- spring security 注解不生效的一些隐含问题
- JQuery/JS select标签动态设置选中值、设置禁止选择 button按钮禁止点击 select获取选中值...
- 利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖
- JMeter篇01:JMeter在Mac下的安装
- linux是32还是64位,如何看linux是32位还是64位
- 【CodeForces-1041C】Coffee Break(贪心,STL,set二分维护,题意难,有坑,SJ题,构造)(知识点总结)
- 深度学习(六十四)Faster R-CNN物体检测
- MySQL时间段查询,无数据补0
- [RMAN]控制文件的恢复
- 判断socket断开
- 惠普瘦客户机多屏显示T5740
- Ubuntu 15.04 Gogs(git 版本库) 二进制安装
- mysq命令行导出sql_mysql 命令行导入导出.sql文件
- JavaScript启示录
- steam遇到错误代码解决方案
- cfa英语不好的怎么学_英语不好能考CFA吗?看看他是怎么做到的
- 关于广州“开四停四“违法逻辑实现
- Kinect驱动识别及SDK下载问题
热门文章
- GitLab CI 中激活Anaconda环境
- Java交替打印两个字符串
- 彻底理解Python切片
- windows设置开机启动项
- AttributeError: module ‘cv2.cv2‘ has no attribute ‘bgsegm‘
- 马尔科夫过程与吉布斯采样
- 数据结构与算法之美学习笔记:哈希算法-哈希算法在分布式系统中有哪些应用(第22讲)...
- Reachability from the Capital
- Storm sql 简单测试
- 基于motion的视频压缩的实时监控系统