我正在使用GSON API 1.7.1,有时会出现以下错误。这个版本有错误吗?我是否需要升级当前版本2.x.x
com.google.gson.JsonParseException: Expecting object found: "<!DOCTYPE"
at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:100)
at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
at com.google.gson.JsonDeserializationContextDefault.fromJsonPrimitive(JsonDeserializationContextDefault.java:85)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:56)
服务器是谷歌推送通知服务器GCM,
这是我的客户代码。
Gson gson = new Gson();
com.sun.jersey.api.client.ClientResponse webResponse=
resource.header("Authorization", authorizationKey).
header("Content-Type", MediaType.APPLICATION_JSON).
post(com.sun.jersey.api.client.ClientResponse.class, payloadStr);
String responsePayload = webResponse.getEntity(String.class);
GcmResponse response = gson.fromJson(responsePayload, GcmResponse.class); ===>>> Exception point
答案 0 :(得分:3)
这个版本有错误吗?
没有。看起来您的服务器正在返回非JSON响应,或者您传递了错误的参数,这与您正在使用的版本无关。
尝试检查服务器是否按预期工作并返回JSON。
答案 1 :(得分:1)
best_partition
无效Json;您的服务器有时会向您的客户端发送错误的消息。由于您的客户99%的时间都在工作,问题显然在服务器中,而不是客户端。
但是,由于您只是从客户端向我们提供了信息,因此我们无法解决问题。最好的办法是尝试捕获完整的错误消息,然后使用搜索或发布不同的问题“为什么我的android-scm服务器发送以<!DOCTYPE
开头的消息他们应该是Json?“
要捕获这个完整错误的消息,我会这样做:
<!DOCTYPE