|
18 | 18 | import java.net.URL; |
19 | 19 | import java.util.Arrays; |
20 | 20 | import java.util.Objects; |
| 21 | +import java.util.concurrent.TimeUnit; |
21 | 22 |
|
22 | 23 | public class FileUtil { |
23 | 24 |
|
24 | 25 | private static final Logger logger = LoggerFactory.getLogger("LCAP_CUSTOMIZE_LOGGER"); |
25 | 26 |
|
| 27 | + private static final OkHttpClient client = new OkHttpClient.Builder() |
| 28 | + .connectTimeout(5, TimeUnit.SECONDS) |
| 29 | + .readTimeout(30, TimeUnit.SECONDS) |
| 30 | + .followRedirects(true) |
| 31 | + .followSslRedirects(true) |
| 32 | + .build(); |
| 33 | + |
26 | 34 | public static InputStream getFileInputStream(String urlStr) throws IOException { |
27 | | - URL url = new URL(getTrueUrl(urlStr)); |
28 | | - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
29 | | - connection.setConnectTimeout(3 * 1000); |
30 | | - connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36"); |
31 | | - return url.openStream(); |
| 35 | + logger.info("urlStr using OkHttp: {}", urlStr); |
| 36 | + |
| 37 | + // 还是保留你原本的 URL 处理逻辑 |
| 38 | + String finalUrl = getTrueUrl(urlStr); |
| 39 | + |
| 40 | + Request request = new Request.Builder() |
| 41 | + .url(finalUrl) |
| 42 | + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36") |
| 43 | + .build(); |
| 44 | + |
| 45 | + // 执行请求 |
| 46 | + Response response = client.newCall(request).execute(); |
| 47 | + |
| 48 | + if (!response.isSuccessful()) { |
| 49 | + // 如果失败(比如 404 或 500),必须关闭响应体并抛出异常 |
| 50 | + response.close(); |
| 51 | + throw new IOException("Unexpected code " + response); |
| 52 | + } |
| 53 | + |
| 54 | + ResponseBody body = response.body(); |
| 55 | + if (body == null) { |
| 56 | + response.close(); |
| 57 | + throw new IOException("Response body is null"); |
| 58 | + } |
| 59 | + |
| 60 | + return body.byteStream(); |
32 | 61 | } |
33 | 62 |
|
34 | 63 | // 新增方法:检测 URL 是否已经编码 |
|
0 commit comments