From 64d5390800ebe7a8258efa04690e727fcf160c2c Mon Sep 17 00:00:00 2001 From: rtm516 Date: Tue, 14 Jul 2020 23:58:09 +0100 Subject: [PATCH] Allow for returning of error messages (#955) * Allow for returning of error messages * Fix request not sending before error check --- .../geysermc/connector/utils/WebUtils.java | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/utils/WebUtils.java b/connector/src/main/java/org/geysermc/connector/utils/WebUtils.java index eaf94d8a..94167c3e 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/WebUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/WebUtils.java @@ -51,19 +51,7 @@ public class WebUtils { con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", "Geyser-" + GeyserConnector.getInstance().getPlatformType().toString() + "/" + GeyserConnector.VERSION); // Otherwise Java 8 fails on checking updates - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer content = new StringBuffer(); - - while ((inputLine = in.readLine()) != null) { - content.append(inputLine); - content.append("\n"); - } - - in.close(); - con.disconnect(); - - return content.toString(); + return connectionToString(con); } catch (Exception e) { return e.getMessage(); } @@ -99,7 +87,27 @@ public class WebUtils { out.write(postContent.getBytes(StandardCharsets.UTF_8)); out.close(); - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + return connectionToString(con); + } + + /** + * Get the string output from the passed {@link HttpURLConnection} + * + * @param con The connection to get the string from + * @return The body of the returned page + * @throws IOException + */ + private static String connectionToString(HttpURLConnection con) throws IOException { + // Send the request (we dont use this but its required for getErrorStream() to work) + int code = con.getResponseCode(); + + // Read the error message if there is one if not just read normally + InputStream inputStream = con.getErrorStream(); + if (inputStream == null) { + inputStream = con.getInputStream(); + } + + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); String inputLine; StringBuffer content = new StringBuffer();