From b7727423190fe2f05c4577cabe09cd3f9af1da21 Mon Sep 17 00:00:00 2001 From: Kamalpreet Kaur Date: Thu, 24 Jul 2025 20:56:12 +0530 Subject: [PATCH] fix: 400 bad request in case of invalid json fetch binary URL --- pom.xml | 2 +- src/main/java/com/browserstack/local/Local.java | 2 +- src/main/java/com/browserstack/local/LocalBinary.java | 11 ++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index b59d098..f0416f9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.browserstack browserstack-local-java jar - 1.1.6 + 1.1.7 browserstack-local-java Java bindings for BrowserStack Local diff --git a/src/main/java/com/browserstack/local/Local.java b/src/main/java/com/browserstack/local/Local.java index 92ac38c..09c08f0 100644 --- a/src/main/java/com/browserstack/local/Local.java +++ b/src/main/java/com/browserstack/local/Local.java @@ -23,7 +23,7 @@ public class Local { private LocalProcess proc = null; // Current version of binding package, used for --source option of binary - private static final String packageVersion = "1.1.6"; + private static final String packageVersion = "1.1.7"; private final Map parameters; private final Map avoidValueParameters; diff --git a/src/main/java/com/browserstack/local/LocalBinary.java b/src/main/java/com/browserstack/local/LocalBinary.java index 08af9ad..bf4542d 100644 --- a/src/main/java/com/browserstack/local/LocalBinary.java +++ b/src/main/java/com/browserstack/local/LocalBinary.java @@ -207,12 +207,17 @@ private void fetchSourceUrl() throws LocalException { connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("User-Agent", "browserstack-local-java/" + Local.getPackageVersion()); connection.setRequestProperty("Accept", "application/json"); - if (fallbackEnabled) connection.setRequestProperty("X-Local-Fallback-Cloudflare", "true"); - String jsonInput = "{\"auth_token\": \"" + key + (fallbackEnabled ? ("\", \"error_message\": \"" + downloadFailureThrowable.getMessage()) + "\"" : "\"") + "}"; + JSONObject inputParams = new JSONObject(); + inputParams.put("auth_token", this.key); + if (fallbackEnabled) { + connection.setRequestProperty("X-Local-Fallback-Cloudflare", "true"); + inputParams.put("error_message", downloadFailureThrowable.getMessage()); + } + String jsonInputParams = inputParams.toString(); try (OutputStream os = connection.getOutputStream()) { - byte[] input = jsonInput.getBytes("utf-8"); + byte[] input = jsonInputParams.getBytes("utf-8"); os.write(input, 0, input.length); }