【发布时间】:2014-03-16 15:47:19
【问题描述】:
我很沮丧。我有一个基本的 Http 授权。为此,我设置了一个HttpGetHeader。
此 Header 需要进行 Base64 编码。我是这样做的:
String acc = uname + ":" + pword;
byte[] a = acc.getBytes();
String header = "Basic " + new String(Base64.encode(a, Base64.DEFAULT));
但是这个编码的字符串不起作用。当我记录标题时,它会按照我的需要打印出来。
它看起来与String h = "Basic c2NodWsZXI6aGVpbmNA=="; 相同,这是有效的。
但是当我比较header.equals(h); 或header==h 他们都是false。
最后,当我将标题设置为 header 时它不起作用,但是当我使用 h 它时它起作用。我猜它与字符串编码有关,但我尝试了 .getBytes("UTF-8") 和类似(ASCII,UTF-16)的不同方式,但它们都不起作用。
用户名和密码是普通的字符和数字。
任何人都可以看到错误吗?谢谢 格雷维斯
【问题讨论】:
-
header.equals(h)返回 false 表示字符串不相同。header==h应返回 false,因为它们不是同一个引用。在使用header.equals(h)比较它们之前,尝试记录您的header和h。试试header.equalsIgnoreCase(h)以防万一。 -
03-16 16:57:42.200: I/HHG(28725): Basic c2NodWsZXI6aGVpbmNA== 03-16 16:57:42.200: I/HHG(28725): Basic c2NodWsZXI6aGVpbmNA==我正在记录它们,它们和我一样。.equalsIgnoreCase返回false -
可能是空格?试试
header.trim().equals(h.trim()) -
嗯,这很难说。它可能来自
encode函数。以后有时间再看看吧:) -
好的,那就回答我的问题,这样我就可以正确地勾选它。谢啦。 :)
标签: java android encoding base64