我想在我的项目中使用android环境中的assembla API。
我正在尝试进行基本身份验证,如下所示:
String authentication = "username:password";
String encoding = Base64.encodeToString(authentication.getBytes(), 0);
URL url = new URL("https://www.assembla.com/");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Basic " + encoding);
conn.setDoOutput(true);
conn.connect();
System.out.println(conn.getResponseCode());
System.out.println(conn.getResponseMessage());
我在输出中得到400和错误请求。
我使用的网址有问题吗?还是其他问题出了错?
最佳答案
看来问题已回答here。编码用户名-密码对时,需要使用Base64.NO_WRAP标志:
String encoding = Base64.encodeToString(authentication.getBytes(), Base64.NO_WRAP);
默认情况下,Android Base64 util在编码字符串的末尾添加换行符。这会使HTTP header 无效,并导致“错误请求”。
Base64.NO_WRAP标志指示util创建不带换行符的编码字符串,从而使HTTP header 保持完整。
关于android - 从Android访问Assembla Rest API的基本身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7106028/