0

我在可运行文件中有这段代码,在 Froyo 上一切正常。但是在 ICS 上它说它确实连接但给了我一个找不到文件的错误并返回 -1 作为文件大小。

具有不需要身份验证的文件的 ICS 在 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 url 进行身份验证时遇到问题,不过,这是目前的次要问题。

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

我已经离开了一段时间,但这就是我现在正在使用的。它确实适用于 ICS,我目前没有使用 Froyo 进行测试,所以不能确定它是否适用于两者......

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

1 回答 1

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,尽管请求不在服务器日志中)。请告诉我您是否可以正常工作/是否已经正常工作,因为我将不胜感激。

于 2013-05-02T21:52:32.783 回答