Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我遇到gson异常:预期找到对象?_Java_Json_Exception_Google Cloud Messaging_Gson - Fatal编程技术网

Java 为什么我遇到gson异常:预期找到对象?

Java 为什么我遇到gson异常:预期找到对象?,java,json,exception,google-cloud-messaging,gson,Java,Json,Exception,Google Cloud Messaging,Gson,我使用的GSON API 1.7.1有时会出现以下错误。这个版本有bug吗?我需要升级当前版本2.x.x吗 com.google.gson.JsonParseException: Expecting object found: "<!DOCTYPE" at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor

我使用的GSON API 1.7.1有时会出现以下错误。这个版本有bug吗?我需要升级当前版本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)
这个版本有bug吗

不会。看起来您的服务器正在返回非JSON响应,或者您传递了错误的参数,这与您使用的版本无关


尝试检查服务器是否按预期工作并返回JSON。

如果您发布引发此异常的代码会更好。您的服务器返回的是非JSON响应,与您使用的版本无关。@GPrathour我已经编辑了问题,
我想是的,但为什么GCM有时会发送这样的错误,当我尝试发送请求时,所有的事情都很好。当我尝试重新发送相同的查询时,我得到了成功的响应。此问题发生在我发送的所有邮件中的1%。@mmc18则有1%的时间您收到错误的响应。捕获异常并将您得到的响应打印到日志中。我之前已将异常添加到问题中,您需要更多吗?您是对的,我已修改代码,然后等待问题再次出现。我已在启用调试日志后捕获错误日志。这是线
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
if(response.startsWith("<!DOCTYPE")) {
    someLoggingMethod(response);`
} else {
    // process the response