0

这是我调用的函数:

 public static void sendData(final Integer type , final String url, final Context context, final CrudStateCallback back){
    StringRequest jr = new StringRequest(type, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    System.out.println(response.substring(0,100));
                    Log.i("","WSCALLS response is: " + response);
                    if(back != null)
                        back.onResponse(200, response);
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("","WSCALLS Something went wrong!");
            error.printStackTrace();
            String errorS = "error is null";
            int code = 0;
            try {
                if (error != null) {
                    errorS = error.getMessage();
                    code = error.networkResponse.statusCode;
                }
            }catch (Exception e){
                Log.e("","WSCALLS error is in send data:" + e.getMessage());
            }
            if(back != null)
                back.onResponse(code, errorS);
        }
    });
    if (Utils.networkIsAvailable( context)) {
        jr.setRetryPolicy(new DefaultRetryPolicy(60 * 1000, 0, 1));
        VidyoSampleApplication.mRequestQueue.add(jr);
    }
}

使用以下参数:

WSCalls.sendData(Request.Method.GET, "https://control.facetalk.nl/vidyologs/call_start.php?meetingID=82000005715&profielID=51108581", VidyoSampleActivity.this, null);

我尝试了网址:https ://control.facetalk.nl/vidyologs/call_start.php?meetingID=82000005715&profielID=51108581并且它有效,我在邮递员上得到“200”。但是 Volley 会返回以下错误:

11-17 16:54:57.094: W/System.err(3415): com.android.volley.NoConnectionError: java.net.ProtocolException: Too many follow-up requests: 21
11-17 16:54:57.094: W/System.err(3415):     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:151)
11-17 16:54:57.094: W/System.err(3415):     at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
11-17 16:54:57.094: W/System.err(3415):     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:401)
11-17 16:54:57.094: W/System.err(3415):     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501)
11-17 16:54:57.094: W/System.err(3415):     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
11-17 16:54:57.094: W/System.err(3415):     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)
11-17 16:54:57.095: W/System.err(3415):     at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:110)
11-17 16:54:57.095: W/System.err(3415):     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)

我能做些什么来解决这个问题?我不明白,我尝试修改 detaulf 重试策略,但没有任何帮助

4

1 回答 1

0

我使用 HTTPClient 而不是 Volley 完成了它,它起作用了:

 HttpClient httpClient = new DefaultHttpClient();
                httpClient.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
                HttpPost httpPost = new HttpPost(url);
                HttpResponse response = httpClient.execute(httpPost);
                String responseBody = "";
                BufferedReader buffer = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                String s = "";
                while ((s = buffer.readLine()) != null)
                    responseBody += s;
                Log.i("","WSCAlls response body is:" + responseBody);
于 2016-11-18T14:43:02.507 回答