我正在使用此处的确切代码:
http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AuthJavaSampleHMACSignature.html
为我的应用程序生成签名。但是,在Eclipse
中无法识别一行代码result = Encoding.EncodeBase64(rawHmac);
Eclipse说它无法识别“编码”类。这是确切的错误:
EncodeBase64(byte [])方法未定义为编码
类型
我试过导入以下三件事:
javax.sound.sampled.AudioFormat.Encoding;
org.apache.commons.codec.binary.Base64;
org.omg.IOP.Encoding;
然而,所有这三个都告诉我他们不认识'EncodeBase64'功能。有人知道导入我应该用于上面链接的代码吗?
答案 0 :(得分:2)
标准Java :javax.xml.bind.DataTypeConverter支持Base64编码/解码。这将是一个零开销选择。
答案 1 :(得分:2)
请注意,没有熟练的Java开发人员会使用大写字母作为方法的开头,因此如果您没有输入拼写错误,则不能指望在任何标准库中找到Encoding.EncodeBase64
。你最好使用另一个Base 64编码器/解码器,例如Apache Commons Codec中找到的编码器/解码器 - 这似乎是我可以使用的最好的API。
答案 2 :(得分:0)
另一种编码rawHmac
的解决方案就是这个:
String result = new String(encode(rawHmac));
使用此编码功能:
private static char[] encode(byte[] bytes) {
final int amount = bytes.length;
char[] result = new char[2 * amount];
int j = 0;
for (int i = 0; i < amount; i++) {
result[j++] = HEX[(0xF0 & bytes[i]) >>> 4];
result[j++] = HEX[(0x0F & bytes[i])];
}
return result;
}
private static final char[] HEX = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};