【问题标题】:NoConnectionError in android volleyandroid volley 中的 NoConnectionError
【发布时间】:2015-09-04 00:47:34
【问题描述】:

以下是我的代码。我第一次得到 com.android.volley.NoConnectionError: java.io.InterruptedIOException 并且第二次它工作正常。服务器响应也很好,服务器端没有错误。

RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

    JsonObjectRequest request = new JsonObjectRequest(URL, null,
            new Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject responseJsonObject) {
                    try {
                        if (responseJsonObject.has("user")
                                && !responseJsonObject
                                        .isNull("user")) {
                                user.jsonParser(responseJsonObject
                                    .getJSONObject("user"));
                        }
                    } catch (JSONException exception) {
                        Toast.makeText(context, "Error Occured",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            }, new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError volleyError) {
                    progressDialog.dismiss();
                    Log.d("Volley Error", volleyError.toString());
                    Toast.makeText(context, "Connectivity Error",
                            Toast.LENGTH_SHORT).show();
                }
            });

    queue.add(request);
    progressDialog.show();
    queue.start();

【问题讨论】:

标签: android android-volley android-networking


【解决方案1】:

我遇到了同样的问题,我通过删除以下行解决了它

queue.start()

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。问题 Vamsi referenced 有一个使用 OkHttp 的解决方法,如果您使用 OkHttp 作为 volley 中的堆栈,则可以使用该解决方法(另请参阅该问题 on how to use OkHttp in volley 中的 cmets)。

    但是,这是另一个不涉及使用其他库的 hacky 解决方法:

    final RequestQueue requestQueue = getRequestQueue();
    
    final class ErrorFirstTimeHack {
        boolean first_time = true;
        MyVolleyJsonObjectRequest request = null;
    }
    final ErrorFirstTimeHack errorFirstTimeHack = new ErrorFirstTimeHack();
    final MyVolleyJsonObjectRequest request = buildRequestObject(
        Request.Method.GET,
        url,
        new Response.Listener() {
            @Override
            public void onResponse(Object response) {
                // normal success processing
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (error instanceof com.android.volley.NoConnectionError) {
                    if (errorFirstTimeHack.first_time) {
                        errorFirstTimeHack.first_time = false;
                        requestQueue.add(errorFirstTimeHack.request);
                        return;
                    }
                }
                // normal error processing
            }
        }
    );
    errorFirstTimeHack.request = request;
    requestQueue.add(request);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 2021-02-05
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多