问题描述
- 使用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