diff --git a/README.md b/README.md
index 75b9c7b..77a7806 100755
--- a/README.md
+++ b/README.md
@@ -18,12 +18,12 @@ Install the package using Maven:
com.veryfi
veryfi-java
- 2.1.1
+ 2.1.2
```
Install the package using Gradle:
```bash
-implementation group: 'com.veryfi', name: 'veryfi-java', version: '2.1.1'
+implementation group: 'com.veryfi', name: 'veryfi-java', version: '2.1.2'
```
## Getting Started
diff --git a/pom.xml b/pom.xml
index d2cf0ab..335c0fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.veryfi
veryfi-java
- 2.1.1
+ 2.1.2
jar
veryfi-java
diff --git a/src/main/java/veryfi/Constants.java b/src/main/java/veryfi/Constants.java
index 8939e79..b0d1345 100644
--- a/src/main/java/veryfi/Constants.java
+++ b/src/main/java/veryfi/Constants.java
@@ -27,7 +27,7 @@ private Constants() {
/**
* header for HttpRequest
*/
- public static final String USER_AGENT_JAVA = "Java Veryfi-Java/2.1.1";
+ public static final String USER_AGENT_JAVA = "Java Veryfi-Java/2.1.2";
/**
* header for HttpRequest
*/
diff --git a/src/main/java/veryfi/NetworkClient.java b/src/main/java/veryfi/NetworkClient.java
index c517efb..614710f 100644
--- a/src/main/java/veryfi/NetworkClient.java
+++ b/src/main/java/veryfi/NetworkClient.java
@@ -1,5 +1,6 @@
package veryfi;
+import org.json.JSONArray;
import org.json.JSONObject;
import veryfi.enums.HttpMethod;
@@ -7,6 +8,7 @@
import javax.crypto.spec.SecretKeySpec;
import java.io.File;
import java.net.URI;
+import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpHeaders;
import java.net.http.HttpRequest;
@@ -141,16 +143,46 @@ private HttpRequest getHttpRequest(HttpMethod httpVerb, String endpointName, JSO
.headers(headers.toArray(new String[0]))
.PUT(HttpRequest.BodyPublishers.ofString(requestArguments.toString()))
.build();
- default -> request = HttpRequest.newBuilder()
- .uri(URI.create(apiUrl))
- .timeout(Duration.ofSeconds(timeOut))
- .headers(headers.toArray(new String[0]))
- .GET()
- .build();
+ default -> {
+ String getUri = apiUrl;
+ String query = buildQueryString(requestArguments);
+ if (!query.isEmpty()) {
+ getUri = apiUrl + "?" + query;
+ }
+ request = HttpRequest.newBuilder()
+ .uri(URI.create(getUri))
+ .timeout(Duration.ofSeconds(timeOut))
+ .headers(headers.toArray(new String[0]))
+ .GET()
+ .build();
+ }
}
return request;
}
+ /**
+ * Builds an application/x-www-form-urlencoded query string from a JSON object (GET parameters).
+ */
+ private static String buildQueryString(JSONObject requestArguments) {
+ if (requestArguments == null || requestArguments.isEmpty()) {
+ return "";
+ }
+ StringJoiner joiner = new StringJoiner("&");
+ for (String key : requestArguments.keySet()) {
+ Object value = requestArguments.opt(key);
+ if (value == null || JSONObject.NULL.equals(value)) {
+ continue;
+ }
+ String valueStr = (value instanceof JSONObject || value instanceof JSONArray)
+ ? value.toString()
+ : String.valueOf(value);
+ joiner.add(URLEncoder.encode(key, StandardCharsets.UTF_8)
+ + "="
+ + URLEncoder.encode(valueStr, StandardCharsets.UTF_8));
+ }
+ return joiner.toString();
+ }
+
/**
* Prepares the headers needed for a request.
*