Файл не загружен с некоторых HTTP-адресов - PullRequest
0 голосов
/ 16 ноября 2018

Я использую URL, чтобы загрузить этот jar, но он загружает файл 0kb.Я использую другой URL, даже если ftp url работает нормально, проблема только с этим файлом.

url, который не работает

http://jdbc.postgresql.org/download/postgresql-9.2-1002.jdbc4.jar

Используя код ниже.

try 
{
    bis = new BufferedInputStream(url.openStream());
    String fileName = DownloadSourceUtils.getUniqueFileName(DownloadSourceConstants.DOWNLOAD_LOCALTION, url.getFile());

    File directory = new File(DownloadSourceConstants.DOWNLOAD_LOCALTION);
    if (! directory.exists()){
        directory.mkdir();
        // If you require it to make the entire directory path including parents,
        // use directory.mkdirs(); here instead.
    }

    fos = new FileOutputStream(DownloadSourceConstants.DOWNLOAD_LOCALTION+File.separator+fileName);

    byte dataBuffer[] = new byte[1024];
    int bytesRead;
    while ((bytesRead = bis.read(dataBuffer, 0, 1024)) != -1) 
    {
        fos.write(dataBuffer, 0, bytesRead);
    }
    fos.flush();
    output = url + " downloaded successfully";
    return output;
} 
catch (IOException e)
{
    output = e.getMessage();
    return output;
}
finally
{
    if(bis != null)
        bis.close();
    if(fos != null)
        fos.close();
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я думаю, что проблема в том, что URL перенаправляет на другой, который является HTTPS:

$ curl -i http://jdbc.postgresql.org/download/postgresql-9.2-1002.jdbc4.jar
HTTP/1.1 301 Moved Permanently
Location: https://jdbc.postgresql.org/download/postgresql-9.2-1002.jdbc4.jar
Content-Length: 0
Date: Fri, 16 Nov 2018 14:37:09 GMT
Server: lighttpd/1.4.45
Connection: keep-alive

Так что я бы обновил ваш URL до https://jdbc.postgresql.org/download/postgresql-9.2-1002.jdbc4.jar См. URLConnection неСледуйте инструкции Redirect , чтобы обсудить причины, по которым Java не работает.

0 голосов
/ 16 ноября 2018

Запрос перенаправляется на HTTPS. И, следовательно, содержание не предоставляется.

Если изменить ссылку на HTTPS, все заработает.

...