|
18 | 18 | import java.io.IOException; |
19 | 19 | import java.io.InputStream; |
20 | 20 | import java.io.InputStreamReader; |
| 21 | +import java.lang.reflect.Array; |
21 | 22 | import java.net.HttpURLConnection; |
22 | 23 | import java.net.URI; |
23 | 24 | import java.net.URLEncoder; |
@@ -183,7 +184,31 @@ protected ConnectionDetails openConnection(@NotNull String endpointPath, @NotNul |
183 | 184 | for (final Map.Entry<String, Object> entry : queryParams.entrySet()) { |
184 | 185 | if (!first) queryString.append("&"); |
185 | 186 | first = false; |
186 | | - queryString.append(encode(entry.getKey())).append("=").append(encode(String.valueOf(entry.getValue()))); |
| 187 | + |
| 188 | + final StringBuilder builder = new StringBuilder(encode(entry.getKey())); |
| 189 | + final Object value = entry.getValue(); |
| 190 | + if (value != null) { |
| 191 | + builder.append("="); |
| 192 | + |
| 193 | + if (value instanceof Collection<?>) { |
| 194 | + // Collection |
| 195 | + final Collection<?> collection = (Collection<?>) value; |
| 196 | + if (!collection.isEmpty()) { |
| 197 | + for (final Object item : collection) builder.append(encode(String.valueOf(item))).append(","); |
| 198 | + builder.deleteCharAt(builder.length() - 1); |
| 199 | + } |
| 200 | + } else if (value.getClass().isArray()) { |
| 201 | + // Array |
| 202 | + final int length = Array.getLength(value); |
| 203 | + if (length > 0) { |
| 204 | + for (int i = 0; i < length; i++) builder.append(encode(String.valueOf(Array.get(value, i)))).append(","); |
| 205 | + builder.deleteCharAt(builder.length() - 1); |
| 206 | + } |
| 207 | + } else { |
| 208 | + builder.append(encode(String.valueOf(value))); |
| 209 | + } |
| 210 | + } |
| 211 | + queryString.append(builder); |
187 | 212 | } |
188 | 213 | } |
189 | 214 |
|
|
0 commit comments