Как проверить, когда запрос был отправлен? - PullRequest
0 голосов
/ 28 мая 2019

Я отправляю Volley StringRequest, и получение ответа занимает более трех минут (но ответ имеет статус OK и метод действия получения работает правильно).

Есть ли способ проверить, действительно ли запрос был отправлен на сервер (все ответы, которые я нашел о запросах на залп, говорят о том, когда был получен ответ), так что я могу сказать, что это только мой телефонный звонок 2 минуты для обработки запроса перед его передачей или, если requestQueue просто занимает много времени, прежде чем он даже попадет в мой запрос (хотя я отправляю только один запрос Volley, по щелчку, с приоритетом IMMEDIATE).

Журналы на стороне сервера показывают предыдущий запрос (отправка формы веб-просмотра), прибывающий за полные 2-3 минуты до запроса StringRequest, но я не уверен, что задержка на стороне cloudflare, ELB или где-то еще, и я хочу чтобы узнать, могу ли я отменить исходное устройство как виноватое.

Код следует для справки:

public void sendPostRequest(Map<String,String> params, String option)
{
    RequestQueue MyRequestQueue = Volley.newRequestQueue(this);
    String url="";
    switch (option){
        //...
        case "dniImages": //This is the one
            url  = BuildConfig.REST_DNI_IMAGES_ENDPOINT ;
            break;
    }

    StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new com.android.volley.Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            try{
            JSONObject resp = new JSONObject(response);}
            catch(JSONException e){}
        }
    }

    , new com.android.volley.Response.ErrorListener() { 
        @Override
        public void onErrorResponse(VolleyError error) {
            switch (option){
                //...
                case "dniImages":
                    Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }) {
        @Override
        public Priority getPriority() {
            return Priority.IMMEDIATE;
        }

        @Override
        protected com.android.volley.Response<String> parseNetworkResponse(NetworkResponse response) {
            if (response.statusCode == 200) {
                if (option.equals("dniImages"))
                    Toast.makeText(getApplicationContext(), "Error uploading images", Toast.LENGTH_SHORT).show();
            }
            return super.parseNetworkResponse(response);
        }
        protected Map<String, String> getParams() {
            return params;
        }
        @Override
        public Map<String, String> getHeaders(){
            try {
                Map<String, String> headers = super.getHeaders();
                if (headers == null
                        || headers.isEmpty()) {
                    headers = new HashMap<String, String>();
                }
                this.addSessionCookie(headers); 
                return headers;
            }
            catch (AuthFailureError e)
            {
            }
            return new HashMap<String, String>();
        }

        /**
         * Adds session cookie to headers if exists.
         * @param headers
         */
        public final void addSessionCookie(Map<String, String> headers) {
            String cookies = CookieManager.getInstance().getCookie(BuildConfig.TIENDAMIA_URL);
            headers.put("cookie", cookies);
        }

    };
    MyRequestQueue.add(MyStringRequest);
}

1 Ответ

0 голосов
/ 28 мая 2019

Честно говоря, я не работал с Volley, но недавно у нас было несколько ошибок, связанных с сетью, и одним из инструментов, который мне очень помог, был Android Profiler . Я имею в виду, посмотрите на Обзор Network Profiler , это просто потрясающе.

Просмотр подключений: список файлов, которые были отправлены или получены в течение выбранной части временной шкалы во всех потоках ЦП вашего приложения. Для каждого запроса вы можете проверить размер, тип, статус и продолжительность передачи. Вы можете отсортировать этот список, нажав любой заголовок столбца. Вы также видите подробную разбивку выбранной части временной шкалы, показывающую, когда каждый файл был отправлен или получен.

...