Android排球JsonObjectRequest需要太长时间

时间:2016-08-19 15:50:58

标签: android performance http-post android-volley

我现在正在寻找几天来弄清楚为什么我的POST请求需要这么长时间来加载。我正在使用排球库而不是HTTPRequest。

这就是我正在做的请求:

RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());

...

JSONObject jsonObject = new JSONObject();
jsonObject.put("geoLong", longitude);
jsonObject.put("geoLat", latitude);
jsonObject.put("radius", 5);
JsonObjectRequest jsonRequest = new   JsonObjectRequest(Request.Method.POST, URL,
    jsonObject, createResponseListener(), createErrorListener());
jsonRequest.setShouldCache(false);
jsonRequest.setRetryPolicy(new DefaultRetryPolicy(15000, 2, 1));
jsonRequest.setTag(requestTag);
requestQueue.add(jsonRequest);

请求大约需要10-15秒才能加载,直到我收到响应,这非常荒谬,因为响应大小约为1886字节。我通过良好的WLAN连接和3G测试了它。

如果我通过WLAN在我的笔记本电脑上使用邮递员的请求,它只需要大约400毫秒,所以这不是服务器端问题。我很困惑为什么要做这个截击需要这么长时间,我做错了什么?

1 个答案:

答案 0 :(得分:2)

通常排球不会花更多时间。 你可以自己检查一下。

private long mRequestStartTime;

public void performRequest()
{
    mRequestStartTime = System.currentTimeMillis(); // set the request start time just before you send the request.

    JsonObjectRequest request = new JsonObjectRequest(URL, PARAMS, 
        new Response.Listener<JSONObject>() 
        {
            @Override
            public void onResponse(JSONObject response) 
            {
                // calculate the duration in milliseconds
                long totalRequestTime = System.currentTimeMillis() - mRequestStartTime;
            }
        },
        new Response.ErrorListener() 
        {
            @Override
            public void onErrorResponse(VolleyError error) 
            {
                long totalRequestTime = System.currentTimeMillis() - mRequestStartTime;
            }
        });

    requestQueue.add(request);
} 

如果您仍然遇到问题,那么您可以使用Retrofit:http://square.github.io/retrofit/