android - Volley 从不返回 VolleyError 或解释为什么会出现异常

标签 android android-volley jsonexception

借助 Volley 库,我扩展了 Request 对象以实现 GSON 序列化。然后我扩展了这个新对象,以了解我想如何做我的一些 PUT要求。这是 GSON 序列化的第一个对象:

@Override  
protected Response<t> parseNetworkResponse(NetworkResponse response) {  
    try {  
        String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); //response may be too large for string?
        t parsedGSON = mGson.fromJson(jsonString, cls);
        Response <t> returnMessage = Response.success(parsedGSON,  
                HttpHeaderParser.parseIgnoreCacheHeaders(response));
        return returnMessage;

    } catch (UnsupportedEncodingException e) { 
        e.printStackTrace();
        return Response.error(new ParseError(e));  
    } catch (JsonSyntaxException je) {
        je.printStackTrace();
        Log.e("GsonRequest", je.getMessage()!=null?je.getMessage():"JsonSyntaxError");
        return Response.error(new ParseError(je));  
    }  
}  

当我的网络响应到达 Response <t> returnMessage = Response.success(parsedGSON, HttpHeaderParser.parseIgnoreCacheHeaders(response)); 时我填充了<t>具有我传入的正确类的对象完全序列化了所有变量并且没有错误。然而出于某种原因,Volley 跳转到 } catch (JsonSyntaxException je) {我不能透露 je 的内容调试断点或打印日志。同样在我的扩展类(class)中:

 new ErrorListener() {
        @SuppressWarnings("unused")
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();

onErrorResponse从未被调用(我的 onResponse 部分也不是)

所以现在我不知道为什么 Volley 在序列化成功时捕获 JSONException,我也不知道为什么 Volley 不返回错误对象

洞察力赞赏

最佳答案

答案是你扩展或覆盖的任何 Volley 函数都必须有

    @Override
protected void deliverResponse(T response) {
    // TODO Auto-generated method stub
    mListener.onResponse(response);
}

功能实现。 Listener 必须在构造函数中初始化并实现 onResponse 方法。

否则您的网络调用将永远不会在 onResponse 部分返回。

编辑: 并且您的扩展请求类还必须实现 deliverError 以及 deliverResponse

private final Listener<T> mListener;
private ErrorListener mErrorListener;

@Override
 public void deliverError(VolleyError error) {
    mErrorListener.onErrorResponse(error);
}

在构造函数中初始化了 ErrorListener

关于android - Volley 从不返回 VolleyError 或解释为什么会出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556444/

相关文章:

java - 应为 BEGIN_OBJECT,但经过改造后为 BEGIN_ARRAY

Android当前方案/样式的默认窗口背景颜色的资源名称是什么

android - (Android Volley) JSONObject 无法转换为 JSONArray

android - JSONException:索引 5 超出范围 [0..5)

java - Android JSON WebRequest - JSONException : End of input at character 0

java - 制作一个等待 Volley 响应的程序

android - Kotlin 多平台用于开发 Mobile SDK?

android - 无法解析 : junit:junit:4. 12

java - 游戏结束和暂停/恢复处理线程

java - 如何解决发布版本中重复的 jar 条目 [com/android/volley/R.class]?