我想在我的项目中使用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/

10-11 22:21
查看更多