下载zip返回SocketException:连接重置

时间:2013-12-20 18:02:50

标签: java cookies inputstream socketexception connection-reset

有关于Connection的十亿个主题,我尝试了很多方法来下载this file并且总是失败。当我在我的网络浏览器上禁用cookie时,我无法下载它,因此我认为我的问题是使用cookie。 我的程序的功能是提取zip,解析html里面,用Jsoup,在mysql数据库上插入内容并加载到JApplet上。一切正常,除了自动下载部分,我必须在我的网络浏览器中手动下载。

我正在使用this class作为Cookie,这会在

上返回错误
  

read.CookieManager.storeCookies(CookieManager.java:89)

,对应于Cookie类

中的这一行
for (int i=1; (headerName = conn.getHeaderFieldKey(i)) != null; i++) {

,下载课程

  

cm.storeCookies(urlConnection);

下载方法

    public static void main(String args[]) throws Exception {
    downloadFromUrl("http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_mgsasc.zip", "Mozilla", "C:/", "D_mgsasc.zip", true);
    }

    public static void downloadFromUrl(String srcAddress, String userAgent, String destDir, String destFileName, boolean overwrite) throws Exception
    {
        InputStream is = null;
        FileOutputStream fos = null;

try {
            CookieManager cm = new CookieManager();
            URL url = new URL(srcAddress);
            URLConnection urlConnection = url.openConnection();

            urlConnection.setRequestProperty("User-Agent", userAgent);
            urlConnection.setDoInput(true);
            urlConnection.setDoOutput(true);
            urlConnection.setConnectTimeout(30000);
            urlConnection.setReadTimeout(30000);
            urlConnection.setUseCaches(true);
            urlConnection.connect();
            cm.storeCookies(urlConnection);
            cm.setCookies(url.openConnection()); 

            is = urlConnection.getInputStream();
            fos = new FileOutputStream(destFile);

            byte[] buffer = new byte[1024];

            int len, totBytes = 0;
            while((len = is.read(buffer)) > 0)
            {
                totBytes += len;
                fos.write(buffer, 0, len);
            }
            fos.flush();
            fos.close();

        }
    }

*

  

更新,删除了不必要的代码

*

会返回以下错误

  

java.net.SocketException:连接重置为   zip.DownloadFile.downloadFromUrl(DownloadFile.java:71)

与代码中的这一行相关

is = urlConnection.getInputStream();

当我删除Cookie设置代码时,连接重置的相同错误仍然存​​在。

0 个答案:

没有答案