我正在检查org.apache.http.auth类。如果有人有其他参考或示例?

有帮助吗?

解决方案

我以前没有遇到过该特定的软件包,但它说它是针对客户端HTTP身份验证的,我可以使用Android进行使用 java.net API,就像这样:

Authenticator.setDefault(new Authenticator(){
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("myuser","mypass".toCharArray());
    }});
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
c.setUseCaches(false);
c.connect();

显然,您的getPasswordauthentication()可能会做一些比返回常数更聪明的事情。

如果您想用身体提出请求(例如 POST)通过身份验证,请当心 Android问题4326. 。我已经将建议的修复程序链接到那里的平台,但是如果您只想要基本验证:不要打扰身份验证器,则可以做一个简单的解决方法,而是这样做:

c.setRequestProperty("Authorization", "basic " +
        Base64.encode("myuser:mypass".getBytes(), Base64.NO_WRAP));

其他提示

对我来说,它奏效了,

final String basicAuth = "Basic " + Base64.encodeToString("user:password".getBytes(), Base64.NO_WRAP);

apache httpclient:

request.setHeader("Authorization", basicAuth);

httpurlconnection:

connection.setRequestProperty ("Authorization", basicAuth);

您可以手动插入HTTP标头以请求:

HttpGet request = new HttpGet(...);
request.setHeader("Authorization", "Basic "+Base64.encodeBytes("login:password".getBytes()));

手动方法与导入android.util.base64配合正常

String basicAuth = "Basic " + new String(Base64.encode("user:pass".getBytes(),Base64.NO_WRAP ));
connection.setRequestProperty ("Authorization", basicAuth);

对于我的Android项目,我从这里使用了Base64库:

http://iharder.net/base64

这是一个非常广泛的图书馆,到目前为止,我对此没有任何问题。

这对我有用

 URL imageUrl = new URL(url);
                    HttpURLConnection conn = (HttpURLConnection) imageUrl
                            .openConnection();
                    conn.setRequestProperty("Authorization", "basic " +
                            Base64.encode("username:password".getBytes()));
                    conn.setConnectTimeout(30000);
                    conn.setReadTimeout(30000);
                    conn.setInstanceFollowRedirects(true);
                    InputStream is = conn.getInputStream();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top