diff --git a/pom.xml b/pom.xml index d11feaa..81cc167 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,13 @@ flatlaf 0.43 + + + + commons-httpclient + commons-httpclient + 3.1 + \ No newline at end of file diff --git a/src/main/java/ovh/alexisdelhaie/endpoint/Application.java b/src/main/java/ovh/alexisdelhaie/endpoint/Application.java index 42db7e9..fbe2bc8 100644 --- a/src/main/java/ovh/alexisdelhaie/endpoint/Application.java +++ b/src/main/java/ovh/alexisdelhaie/endpoint/Application.java @@ -5,11 +5,10 @@ import ovh.alexisdelhaie.endpoint.utils.Tools; import javax.swing.*; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; public class Application { - public static void main(String[] args) throws UnsupportedLookAndFeelException, IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { + public static void main(String[] args) throws UnsupportedLookAndFeelException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException { ConfigurationProperties props = new ConfigurationProperties(); UIManager.setLookAndFeel(Tools.getLookAndFeel(props.getStringProperty("theme", "IntelliJ"))); MainWindow dialog = new MainWindow(props); diff --git a/src/main/java/ovh/alexisdelhaie/endpoint/configuration/AboutDialog.java b/src/main/java/ovh/alexisdelhaie/endpoint/configuration/AboutDialog.java index c14b49d..35cf74c 100644 --- a/src/main/java/ovh/alexisdelhaie/endpoint/configuration/AboutDialog.java +++ b/src/main/java/ovh/alexisdelhaie/endpoint/configuration/AboutDialog.java @@ -13,7 +13,7 @@ public class AboutDialog extends JDialog { public static final int WIDTH = 740; public static final int HEIGHT = 500; - public static final String VERSION = "0.1.5.1"; + public static final String VERSION = "0.1.5.2"; private JPanel contentPane; private JLabel version; diff --git a/src/main/java/ovh/alexisdelhaie/endpoint/http/HttpClient.java b/src/main/java/ovh/alexisdelhaie/endpoint/http/HttpClient.java index 261d5bf..23f6eea 100644 --- a/src/main/java/ovh/alexisdelhaie/endpoint/http/HttpClient.java +++ b/src/main/java/ovh/alexisdelhaie/endpoint/http/HttpClient.java @@ -126,7 +126,6 @@ public class HttpClient { } SSLSocket s = (SSLSocket) factory.createSocket(host, port); - s.setEnabledProtocols(new String[] { "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" }); s.setKeepAlive(false); s.setSoTimeout(timeout); if (allowDowngrade) { diff --git a/src/main/java/ovh/alexisdelhaie/endpoint/http/Response.java b/src/main/java/ovh/alexisdelhaie/endpoint/http/Response.java index b3ab704..676a1af 100644 --- a/src/main/java/ovh/alexisdelhaie/endpoint/http/Response.java +++ b/src/main/java/ovh/alexisdelhaie/endpoint/http/Response.java @@ -73,12 +73,7 @@ public class Response { private void parseBody() { if (headers.containsKey("transfer-encoding")) { if (headers.get("transfer-encoding").toLowerCase().contains("chunked")) { - ArrayList chunks = Chunked.parse(body); - final StringBuilder sb = new StringBuilder(); - for (String chunk : chunks) { - sb.append(chunk); - } - body = sb.toString(); + body = Chunked.parse(body); } } } diff --git a/src/main/java/ovh/alexisdelhaie/endpoint/http/parsers/Chunked.java b/src/main/java/ovh/alexisdelhaie/endpoint/http/parsers/Chunked.java index ddd04aa..da72828 100644 --- a/src/main/java/ovh/alexisdelhaie/endpoint/http/parsers/Chunked.java +++ b/src/main/java/ovh/alexisdelhaie/endpoint/http/parsers/Chunked.java @@ -1,23 +1,22 @@ package ovh.alexisdelhaie.endpoint.http.parsers; +import org.apache.commons.httpclient.ChunkedInputStream; + +import java.io.ByteArrayInputStream; +import java.io.IOException; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; public class Chunked { - public static ArrayList parse(String body) { - ArrayList result = new ArrayList<>(); + public static String parse(String body) { + String result; try { - body = body.strip(); - int length; int pos; - do { - pos = body.indexOf("\r\n"); - length = Integer.parseInt(body.substring(0, pos), 16); - result.add(body.substring(pos + 2, length)); - body = body.substring(pos + 2 + length); - } while (!body.isEmpty()); - } catch (NumberFormatException e) { - result.add(body); + ChunkedInputStream inputStream = new ChunkedInputStream(new ByteArrayInputStream(body.getBytes())); + result = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + } catch (IOException e) { + result = e.getLocalizedMessage(); } return result; }