客户端从服务器获取凭证

官方说法获取凭证说明:
http://developer.qiniu.com/docs/v6/api/reference/security/download-token.html

api获取凭证的部分代码:
String encodedSign = EncodeUtils.urlsafeEncodeString(mac.doFinal(data));
return this.accessKey + ":" + encodedSign;

我不想直接在服务器端生成凭证再返回给客户端,所以我想通过服务器端生成 mac
( Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);) 后通过jObject.put("msg", mac)返回给客户端,通过下面代码生成一个完整的图片地址

Mac mac = (Mac) jsonObject.get("msg");
String baseUrl = URLUtils.makeBaseUrl(空间名, 文件名);
GetPolicy getPolicy = new GetPolicy();
String 下载地址= getPolicy.makeRequest(baseUrl, mac);

在servlet的服务器中 只要添加了
Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY); 就报错,无论是主线程还是子线程都一样好像Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);不能放在线程执行一样

阅读 4.2k
3 个回答

Mac类的构造函数就只有ak、sk的赋值,并没有其他的操作,能否提供下报错的具体信息,这边好做出判断。

servlet的服务器中Mac类是怎么获取的,java版本多少,可以使用源码编译为对应版本的jar;
mac类如何序列化到客户端的。java可以字节码序列化,远程服务器再反序列化,如ejb的方式等。但android的虚拟机和oracle的jvm是不同结构,字节码是不一样的。不能使用json将包含其它方法的类传到另一台虚拟机。

java.lang.UnsupportedClassVersionError: Bad version number in .class file

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题