我在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());
答案 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,尽管请求不在服务器日志中)。请告诉我你是否已经开始工作/已经开始工作了,因为我将不胜感激。