Skip to content

Commit d10976b

Browse files
committed
Fix null ref on empty web exception
1 parent cd3e950 commit d10976b

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/AndroidClient/client/src/main/java/net/servicestack/client/JsonServiceClient.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,14 @@ public static RuntimeException createException(HttpURLConnection res, int respon
200200
if (res.getHeaderFields().containsKey(HttpHeaders.ContentType) && Utils.matchesContentType(res.getHeaderField(HttpHeaders.ContentType), MimeTypes.Json)){
201201
Gson gson = new Gson();
202202
JsonElement element = gson.fromJson(responseBody, JsonElement.class);
203-
JsonObject jsonObj = element.getAsJsonObject();
204-
205-
for (Map.Entry<String,JsonElement> jsonElementEntry : jsonObj.entrySet()) {
206-
if(jsonElementEntry.getKey().toLowerCase().equals("responsestatus")) {
207-
webEx.setResponseStatus(Utils.createResponseStatus(jsonObj.get(jsonElementEntry.getKey())));
208-
break;
203+
if(element != null) {
204+
JsonObject jsonObj = element.getAsJsonObject();
205+
206+
for (Map.Entry<String,JsonElement> jsonElementEntry : jsonObj.entrySet()) {
207+
if(jsonElementEntry.getKey().toLowerCase().equals("responsestatus")) {
208+
webEx.setResponseStatus(Utils.createResponseStatus(jsonObj.get(jsonElementEntry.getKey())));
209+
break;
210+
}
209211
}
210212
}
211213
}

src/AndroidClient/client/src/test/java/net/servicestack/client/tests/JsonServiceClientTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.servicestack.client.ConnectionFilter;
77
import net.servicestack.client.JsonServiceClient;
88

9+
import net.servicestack.client.WebServiceException;
910
import net.servicestack.client.tests.dto.*;
1011

1112
import java.net.HttpURLConnection;
@@ -47,5 +48,20 @@ public void exec(HttpURLConnection conn) {
4748
assertEquals("Hello, World!", response.getResult());
4849
assertTrue(passTest[0]);
4950
}
51+
//TODO Add service accessible via CI server
52+
// public void test_can_parse_empty_404_correctly() {
53+
// Boolean passTest = false;
54+
// JsonServiceClient localTestClient = new JsonServiceClient("http://localhost:65109/");
55+
// Hello request = new Hello()
56+
// .setName("World");
57+
// try {
58+
// localTestClient.get(request);
59+
// } catch (WebServiceException ex) {
60+
// assertEquals(ex.getStatusCode(),404);
61+
// passTest = true;
62+
// }
63+
//
64+
// assertTrue(passTest);
65+
// }
5066

5167
}

0 commit comments

Comments
 (0)