我很沮丧。我有一个基本的Http授权。为此我设置了一个HttpGet
标题。
此标头需要进行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)的不同方式,但它们都没有工作。
用户名和密码是普通的字符和数字。
任何人都可以看到错误吗?谢谢 Grevius
答案 0 :(得分:2)
header.equals(h)
返回false表示字符串不相同。 header==h
将返回false,因为它们不是相同的引用。
空空间也许?试试header.trim().equals(h.trim())
答案 1 :(得分:0)
尝试使用base64.encodestring(s)