package http;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.function.Function;
class PdfUtil {
public void getPdffrom302(String url, String filePath, Function<String, String> changeUtil){
try {
System.out.println("访问地址:" + url);
//发送get请求
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection();
conn.setRequestMethod("GET");
//必须设置false,否则会自动redirect到重定向后的地址
conn.setInstanceFollowRedirects(false);
conn.addRequestProperty("Accept-Charset", "UTF-8;");
conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Firefox/3.6.8");
// conn.addRequestProperty("Referer", "http://matols.com/");
conn.connect();
//判定是否会进行302重定向
if (conn.getResponseCode() == 302) {
//如果会重定向,保存302重定向地址,以及Cookies,然后重新发送请求(模拟请求)
String location = conn.getHeaderField("Location");
location = changeUtil.apply(location);
String cookies = conn.getHeaderField("Set-Cookie");
serverUrl = new URL(location);
conn = (HttpURLConnection) serverUrl.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", cookies);
conn.addRequestProperty("Accept-Charset", "UTF-8;");
conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Firefox/3.6.8");
// conn.addRequestProperty("Referer", "http://matols.com/");
conn.connect();
System.out.println("跳转地址:" + location);
}
//将返回的输入流转换成字符串
InputStream is = conn.getInputStream();
File f = new File(filePath);
OutputStream os = new FileOutputStream(f);
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
os.flush();
is.close();
os.close();
// 释放资源
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
PdfUtil p= new PdfUtil();
String url="http://www ";
p.getPdffrom302(url,"1.pdf", new Function<String, String>() {
public String apply(String location) {
return location.replace("files.xxxx.com", "128.0.0.1");
}
});
}
}
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>