1

我第一次使用 HttpURLConnection 进行第一次测试。现在我也想支持https,但它不起作用。我整天都在做,到目前为止什么都没有。大多数过去的问题都与证书问题有关。奇怪的是,在我的情况下,它下载了文件,但它要么已损坏(如果它是一个简单的文件),要么 zips 内容丢失(空)。我会发布我的代码,看看我是否做错了什么。

try{
    URL url = new URL(stuffs[0]);//<-actual url I am searching https://...
    String fileName = stuffs[1];
    String optionalFilePath = stuffs[2] == null ? null : stuffs[2];
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setConnectTimeout(20000);
    connection.connect();
        if(connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
            checkErrorCode(connection.getResponseCode());
            return false;
        }
    InputStream in = new BufferedInputStream(connection.getInputStream());
    FileOutputStream out = null;

        if(optionalFilePath == null)
            out = new FileOutputStream(PATH +"/"+fileName);
        else {
            File newDir = new File(PATH+optionalFilePath);
            newDir.mkdirs();
            out = new FileOutputStream(PATH + (optionalFilePath==null?"":optionalFilePath) +"/"+fileName);
            }

    byte[] buffer = new byte[1024];
    int count;
    while((count = in.read(buffer)) != -1){
        out.write(buffer, 0, count);
        }

    out.flush();
    out.close();
    in.close();
    }

经过进一步调试,我发现内容长度为-1。所以我想为什么拉链是空的是有道理的。现在我不太清楚为什么它返回-1。我在网络浏览器上正确下载了它。所以我知道它存在。

4

2 回答 2

0

通过https下载文件您应该接受来自应用程序的https证书信任所有证书使用HttpClient over HTTPSandroid中的https文件下载导致异常

对于Downlod zip 或任何检查,请 使用Android 下载文件,并在ProgressDialog 中显示进度

于 2013-07-02T12:38:16.780 回答
0

我相信答案是您正在调用 connect()。

URL url = new URL(stuffs[0]);//<-actual url I am searching https://...
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(20000);
connection.connect();
if(connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
    checkErrorCode(connection.getResponseCode());
    return false;
}
InputStream in = new BufferedInputStream(connection.getInputStream());

尝试不调用connection.connect,并将响应代码检查移到调用的行之后connection.getInputStream()

于 2013-07-08T15:06:53.190 回答