HttpURLConnection的身份验证器适用于Froyo,但不适用于IceCreamSandwich

时间:2012-10-09 00:31:54

标签: java android http android-4.0-ice-cream-sandwich

我在runnable中有这个代码,在Froyo上一切都很完美。但是在ICS上,它说它确实连接但是给了我一个文件未找到错误并返回-1作为文件大小。

ICS上没有问题,文件不需要身份验证。

在ICS上有不同的身份验证方式吗?或者我错过了一些ICS HttpURLConnection细节?

Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user,pass);
                    }
                });
URL url = new URL(URLString);

HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();//connection says that it is connected
final int filesize = c.getContentLength();//file size is -1 when using ICS
c.disconnect();

此外,我在Froyo上验证https网址时遇到了问题,但这是目前的次要问题..

如果可以的话,谢谢你的帮助..

我已经离开了一段时间,但这就是我现在正在使用的东西。它确实与ICS一起工作,我现在没有和Froyo一起测试,因此无法确定它是否适用于两者......

    private void setAuthenticationCredentials(final String username, final String password) {
            Authenticator.setDefault(new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password
                            .toCharArray());

1 个答案:

答案 0 :(得分:0)

我已使用HttpURLConnection.setRequestProperty()对此请求进行身份验证:

String unencoded = username + ":" + password;
String encoded = Base64.encodeToString(unencoded.getBytes(), Base64.DEFAULT);
Log.d(getClass().getName(), "encoded: " + encoded);
// Attach as authentication header.
connection.setRequestProperty("Authorization", "Basic " + encoded);

然而,这似乎有相反的问题。它适用于3.0及更高版本,但不适用于2.3.4及更低版本(服务器显然发送400,尽管请求不在服务器日志中)。请告诉我你是否已经开始工作/已经开始工作了,因为我将不胜感激。