From 61abed04f38a5733a86a7354ee5f5616e64a45ba Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sat, 14 Dec 2019 12:14:08 +0800 Subject: [PATCH] Fix crash --- .../jackhuang/hmcl/task/FileDownloadTask.java | 2 +- .../java/org/jackhuang/hmcl/task/GetTask.java | 2 +- .../jackhuang/hmcl/util/io/NetworkUtils.java | 36 +++++++++---------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java index 52078466f..870e9328c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java @@ -237,7 +237,7 @@ public class FileDownloadTask extends Task { } int contentLength = con.getContentLength(); - if (contentLength < 1) + if (contentLength < 0) throw new IOException("The content length is invalid."); if (!FileUtils.makeDirectory(file.getAbsoluteFile().getParentFile())) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java index 53df35762..b594e5300 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java @@ -89,7 +89,7 @@ public final class GetTask extends Task { updateProgress(0); HttpURLConnection conn = NetworkUtils.createConnection(url); if (checkETag) repository.injectConnection(conn); - conn.connect(); + conn = NetworkUtils.resolveConnection(conn); if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { // Handle cache diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java index e1e7ce3ac..bf2c7338b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/NetworkUtils.java @@ -36,26 +36,22 @@ public final class NetworkUtils { } public static String withQuery(String baseUrl, Map params) { - try { - StringBuilder sb = new StringBuilder(baseUrl); - boolean first = true; - for (Entry param : params.entrySet()) { - if (param.getValue() == null) - continue; - if (first) { - sb.append('?'); - first = false; - } else { - sb.append('&'); - } - sb.append(URLEncoder.encode(param.getKey(), "UTF-8")); - sb.append('='); - sb.append(URLEncoder.encode(param.getValue(), "UTF-8")); + StringBuilder sb = new StringBuilder(baseUrl); + boolean first = true; + for (Entry param : params.entrySet()) { + if (param.getValue() == null) + continue; + if (first) { + sb.append('?'); + first = false; + } else { + sb.append('&'); } - return sb.toString(); - } catch (IOException e) { - throw new UncheckedIOException(e); + sb.append(encodeURL(param.getKey())); + sb.append('='); + sb.append(encodeURL(param.getValue())); } + return sb.toString(); } public static HttpURLConnection createConnection(URL url) throws IOException { @@ -198,8 +194,8 @@ public final class NetworkUtils { public static URL toURL(String str) { try { - return new URL(URLEncoder.encode(str, "UTF-8")); - } catch (MalformedURLException | UnsupportedEncodingException e) { + return new URL(str); + } catch (MalformedURLException e) { throw new IllegalArgumentException(e); } }