http-使用java下载文件,页面跳转

问题描述

使用java下载文件,页面跳转

想用java下载知网上的pdf文件
http://www.cnki.com.cn/Article/CJFDTOTAL-DNBC201521037.htm
点击pdf下载
弹出的是这个网址http://epub.cnki.net/grid2008/docdown/docdownload.aspx?filename=DNBC201521037&dbcode=CJFD&year=2015&dflag=pdfdown

但我把这个网址复制,再在浏览器上打开的时候,转跳到的是知网首页。


我在浏览器中查看了一下这个文件的下载地址。

再在浏览器中打开,结果是

但把这个地址复制到迅雷上是可以下载的。

现在我问题是,怎样用java下载这个pdf文件?java的输出流得到的结果和在浏览器中打开网址的结果一样。而且,分析网页源码的时候只能得到第一个地址。求大神帮忙。

解决方案

用fiddler调试下,多半是因为没有附带需要的cookie。

解决方案二:

这个下载是需要登录的,你在用Java进行下载的时候,需要先模拟登录获取cookie,然后在请求中带上cookie再去进行下载。

登录:

 //登录获取到的cookie
    static Map<String, String> cookieMap = new HashMap<String, String>();

    Response response = null;
        try {
            response = Jsoup.connect(uri)
                    .userAgent("Mozilla")
                    .data(paramsMap)
                    .method(Method.POST)
                    .timeout(20000)
                    .execute();

            if (response.statusCode() == 200) {
                cookieMap = response.cookies();
                loginFlag = true;
            } 

        } catch (IOException e) {
            e.printStackTrace();
        }

进行下载请求时加上cookie:

 Response response = null;
        try {
            response = Jsoup.connect(uri)
                    .userAgent("Mozilla/5.0")
                    .data(paramsMap)
                    .method(Method.POST)
                    .timeout(20000)
                    .cookies(cookieMap)
                    .ignoreContentType(true)
                    .execute();

        } catch (IOException e) {
            e.printStackTrace();
        }

解决方案三:

可能是有拦截器类的东西吧,直接访问容易吧

时间: 2024-11-08 22:28:41

http-使用java下载文件,页面跳转的相关文章

java web-weblogic struts2页面跳转缓慢问题

问题描述 weblogic struts2页面跳转缓慢问题 现在有一个java web项目,框架是SSH,在不同服务器下的weblogic部署,IDC服务器下的服务系统非常慢.定位原因发现所有同步请求走struts2,然后返回成功struts2跳转页面的时候特别慢.异步请求如查询列表.局部验证等无需返回跳转页面的都很快.不知道问题出在哪儿了 解决方案 用ie f12的network traffic看下,是不是dns lookup的问题.因为你的描述来看,你的网站不在一个主机域名下.

JAVA下载文件的后缀名发生变化

问题描述 使用struts2写了一个文件下在的Action结果下点击文件下载的时候,迅雷弹出的下载框中显示的文件名为那个处理下载的Action,而用IE下载的时候文件名显示是正常的.请问这是什么原因,有什么办法可以解决? 解决方案 解决方案二:我也遇到了这样的问题,有没有高手进来解决.要不迅雷就是垃圾,不会获取真实的文件名字解决方案三:不会这样吧,我做的时候迅雷怎么是好的

Java下载文件时文件名乱码问题解决办法_java

复制代码 代码如下: public static String toUtf8String(String s) {              StringBuffer sb = new StringBuffer();              for (int i = 0; i < s.length(); i++) {                  char c = s.charAt(i);                  if (c >= 0 && c <= 255

java webservice上传下载文件代码分享_java

本文实例为大家分享了java webservice上传下载文件代码,供大家参考,具体内容如下 1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Date; import java.text.Simple

php实现当前页面点击下载文件的实例代码_php实例

php控制器中代码 public function downFile($path = ''){ if(!$path) header("Location: /"); download($path); } download文件下载函数代码 function download($file_url,$new_name=''){ if(!isset($file_url)||trim($file_url)==''){ echo '500'; } if(!file_exists($file_url)

$.post 调用ashx 实现下载文件 弹不出框

问题描述 前台jsfunctionExcel(){$.post("as.ashx,{"ExcelOUT":"1"},function(data,status){//$.messager.alert('提示',"文件输出成功");//重新加载datagrid//$("#tab").datagrid('reload');//关闭//$("#dd_dg").window('close');});} as

jsp java-JSP和Java的Action结合下载文件以后返回jsp页面,能把页面上文件的下载量更新一下吗?

问题描述 JSP和Java的Action结合下载文件以后返回jsp页面,能把页面上文件的下载量更新一下吗? 这边是一个下载按钮,直接下载服务器上的一个pdf格式的文件,下载以后数据库里面的下载量会增加.但是页面上显示的下载量没有增加,有没有办法让后台在文件下载完成以后给前台返回一个信息,然后前台根据信息去刷新页面? 注释:用异步请求肯定是不行的,因为用Ajax异步请求的话,文件不能下载! 求高手指点!不好意思!刚注册的用户还没有搞明白我们这边的C币是怎么来的!希望高手不要介意! 解决方案 下载完

用java在web环境下上传和下载文件的技巧_java

文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能. common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载. 用该组件可实现一次上传一个或多个文件,并可限制文件大小. 下载后解压zip包,将commons-fileupload-

java 下载 断点续传-用java语言从web下载文件到本地指定路径下

问题描述 用java语言从web下载文件到本地指定路径下 java语言实现从外部网站下载文件到我们公司的服务器上,支持断点续传并且用一个线程下载一个文件,请问哪位有什么思路或者源码参考.麻烦大家给我出出主意. 网上都是从服务器上下载到本地的案例.这种可以应用到我这种需求上吗? 顺便问下http协议和ftp协议下载文件是否支持下载到本地指定路径,对文件大小类型有没有限制. 解决方案 1.先用代码解析外部网站下载页面获取下载地址 2.代码实现http协议请求解析得到的下载地址,下载文件到本地 3.代