Залп Android JsonObjectRequest занимает слишком много времени

Сейчас я ищу несколько дней, чтобы выяснить, почему мой 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.

Если я выполняю запрос с Postman на моем ноутбуке через WLAN, это займет всего около 400 мс, так что это не проблема на стороне сервера. Я в замешательстве, почему так много времени уходит на запрос залпа, я делаю что-то не так?

1 ответ

Решение

Обычно залп не занимает больше времени. Вы можете проверить сами.

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/

Другие вопросы по тегам