我有个下载地址,通过浏览器打开,会直接调用下载程序进行下载,但是,我Java中对该地址进行下载操作,发现下载回来的并不是需要的那个文件,文件好像是一个网页文件,求大佬分析一下
打开的文件内容:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<script type="text/javascript" src="https://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js"></script>
</head>
<body>
<style>
body{font-size: 16px;margin: 0;font-family: \5FAE\8F6F\96C5\9ED1;}
#info{text-align: center;display:none}
.info1{background: #a7d299;width: 70px;height: 77px;border-radius: 50%;padding-left: 17px;padding-right: 13px;padding-top: 23px;margin: auto;margin-top: 10%;}
.info2{height: 25px;width: 80%;border-bottom: 8px solid #fff;border-left: 8px solid #fff;transform: rotate(-38deg);}
.info3{padding-top: 30px;padding-bottom: 10px;}
a{text-decoration: none;}
.tc2{background: #e45231;color: #fff;display: block;width: 200px;border-radius: 2px;height: 36px;line-height: 36px;margin: auto;margin-top: 20px;}
.tc2:hover{background: #3e3d3d;}
.off{text-align: center;font-size: 12px;line-height: 2em;color: #aaa;}
.off span{color: #923636;font-size: 20px;padding: 3px;}
.off0{background: #eee;width: 70px;height: 60px;margin: 10% auto 30px auto;border-radius: 3px;padding-top: 10px;}
.off1{border-top: 30px solid #888;width: 10px;height: 10px;border-bottom: 10px solid #888;margin: auto;}
#pwdload{background: #fff;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.175);width: 400px;height: 300px;margin: auto;margin-top: 10%;padding: 20px;border-radius: 5px;}
.title{font-size:22px}
.txt{padding-top: 20px;line-height: 1.5em;width: 250px;font-size: 14px;color: #888;}
.input{font-size: 22px;width: 100%;border: 0;border-bottom: 2px solid #0188ff;padding: 5px 0;outline: 0;}
.input:hover{border-bottom: 2px solid #5cacf3;}
.input:focus{border-bottom: 2px solid #5cacf3;}
.btnpwd{background: #0088ff;color: #fff;padding: 10px 20px;border-radius: 2px;display: block;cursor: pointer;float: right;}
.btnpwd:hover{background: #5cacf3;}
.box{width: 280px;margin:auto;padding-top: 20px;}
.left{float: left;}
.ref{cursor: pointer;color: #0188ff;font-size: 14px;text-align: center;margin-top: 10px;}
.imcode{margin-top: -50px;float: right;height: 100px;background: #f5f5f5;}
#img{cursor: pointer;margin-top: 30px;}
.wxclass{padding-top:20px;color: #888;}
.cl{clear: both;}
#pwderr{color: #ff7171;padding-top: 10px;height: 20px;}
@media (max-width: 768px){
#pwdload{ box-shadow: inherit;
width: auto;}
#pwderr { padding: 15px 0;}
.btnpwd{ float: inherit;
text-align: center;
padding: 10px 0px;
width: 100%;}
#info{ padding: 20px;}
.tc2{width: 100%;}
}
</style>
<div id="pwdload">
<div class="title">下载文件</div>
<div class="txt">系统发现您网络不正常,需要验证<br>请输入右边图形中的数字</div>
<div class="imcode"><img id="img" src="imagecode.php?" onclick="changeCode()"/></div>
<div class="cl"></div>
<div class="input_box"><input type="text" name="code" class="input" id="code" value="" /></div>
<div class="cl"></div>
<div id="pwderr"></div>
<div id="sub" onclick="down_r();" class="btnpwd">验证并下载</div>
</div>
<div id="info">
<div class="info1"><div class="info2"></div></div>
<div class="info3">恭喜你,通过了</div>
<div class="load" id="go">
</div>
</div>
<script type="text/javascript">
$("#code").focus();
function changeCode(){
var img=document.getElementById('img');
img.setAttribute('src','imagecode.php?r='+Math.random());
}
function down_r(){
var code = document.getElementById('code').value;
$('#sub').val("提交中...");
$.ajax({
type : 'post',
url : 'ajax.php',
data : { 'file':'A2sBIlpzVXEBJFE9USpccgQ6UjJWf1cwBm0EbV1xB2MBcwFvAXIHMVZhAj0DM1woUHoOagU0CiYEYFozVWRWeAMzAWdaNlU3AWVRN1FnXD8EcVJlVjlXZAY4BC1dMQc0AS4BZAFqB3xWNgI3A25cZFBoDjgFPAo/BDNaOFU4VjUDNAFiWjJVMwFnUWJRZlxqBGlSZlY+V20GMQQ6XTEHNQFlAWQBbQc2Vi4CMQMnXChQaA40BSkKfAQ+WgpVQ1YuA28BI1psVWsBM1FeUX9cDQQSUgZWQlcwBlsEWF1xBz4BawEQAQ0HdVZlAmkDZlxoUD0OMgVrCj8EO1pkVTpWZwMlATRaOlVDARtRQlFOXC8EKVIcVmpXFAZeBGBdNAdSAXABAAEDBzFWVQIBAyJcCFBFDngFCwpqBGFaC1VWVjUDSQECWjNVZgEEUUJRRFxqBAdSGFZnVzkGUQR6XVkHdAFmAR4BawcFVnoCOwMUXBJQMg5DBTcKTgREWh1VS1YbA1EBBVprVWYBBFFYUWdcHwRpUjRWWVcKBmAEZV1OB20BVwEaAT8HElZ3AiMDFFwZUF8OaQUYClkEMVo7VV1WGANAASNaM1VCASJRRlFKXA0EC1IuVlNXMwY2BDNdSgdQAUUBJwFkBxRWdAI4AyJcF1BfDjIFCwpNBDZaDVVZVggDYgESWmhVUwEDUWJRaVxpBGtSFVZwVwMGYgRJXVAHbgFwAXABOgc6Vj0CYwNmXGRQPg49BW8KPwQlWilVeVZqAzIBeA==','bm':code },
dataType : 'json',
success:function(msg){
if(msg.zt == '1'){
document.getElementById("pwdload").style.display="none";
document.getElementById("info").style.display="block";
$("#go").html("<a href="+ msg.url +"><span class=tc2>立即下载</span></a>");
}else{
$("#pwderr").text(msg.url);
$('#sub').val("确认");
changeCode();
$("#code").focus();
}
},
error:function(){
$("pwderr").text("获取失败,请重试");
}
});
}
</script>
</body>
<div style="display:none"><script src="https://s6.cnzz.com/z_stat.php?id=5289169&web_id=5289169" language="JavaScript"></script></div>
</html>
下载的链接为https://vip.d0.baidupan.com/file/?CG4BPww9ATBSWwoyBDFTP1plUmpe5gahVs8D7VyvA58B5gXpAdRQ4VWzBNRR41DMB/hVtFO0C70K6lvHVY1avQicAegMtAH4UqIKuQTAU9xa5lLfXpkG4FbrA4xcIAPkAZYF9wG5UIpVhQS1UapQ1gdzVTVTfAt8Cm9be1VvWjIIZAEzDA4BPFJgCmEEZ1NjWjlSY143BjFWZgMjXGYDcQE8BWABbFA0VTUEY1E8UGcHe1UgU3wLNAo/W21VOFpiCCcBZgxjAXpSNgpqBH9TZFpjUm5eOAZmVmIDY1w3AzIBZQVjAT5QM1U3BGdRN1BhBzhVM1M7Cz4KPFtqVTFaawgwAWYMYgExUjYKbQQ1U3xaZVInXnQGZlZ3A3BccwNnAXMFOwE4UDlVOwRlUTFQYwdsVWZTKgt9CmRbMFVsWj0INQFnDGQBYlI9Cm0EZ1NlWjVSYV44BipWdwNwXHADPwEwBXwBelBiVW8EJVE4UGAHaFVnUzULOAo7W2VVO1pqCD4BcAwkASVScwphBGFTZ1o1UmZeMAY8VmYDNFw4AzcBJwUnATVQdFU+BGNRNFBmB3NVYVM0CzoKI1tvVTlaaQgmAWcMYgFg
下面是我的封装的调用方法(kotlin),对一般的那种地址可以下载(如www.xx.com/xx.txt
这种链接)
/**
* 下载文件到本地
* @param url 网址
* @param file 文件
*/
private fun downloadFile(url: String, file: File) {
val conn = URL(url).openConnection()
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)")
val bytes = conn.getInputStream().readBytes()
file.writeBytes(bytes)
}
已解决,该下载地址只有在有请求头的情况下才会重定向跳转到下载的界面,否则就是返回一个需要验证的网页