Ошибка тайм-аута подключения на устройстве Android при вызове Rest-API

Я пытаюсь вызвать Rest-API в android. Но в большинстве случаев это дает мне ошибку времени ожидания соединения на реальном устройстве. Из 5 попыток он 4 раза возвращает мне эту ошибку.

Хотя то же самое отлично работает в эмуляторе. Я пробовал вызывать Rest-API с использованием разных методов (Volley, HttpClient, Retrofit), но возвращалась та же ошибка.

Я развернул Rest-API на сервере GoDaddy.

StringRequest strReq = new StringRequest(Method.GET, url,
            getSuccessListener(listener), getErrorListener(listener)) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Authorization", Authorization);
            return params;
        }
    };
    strReq.setRetryPolicy(new DefaultRetryPolicy(15 * 1000, 5,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    queue.add(strReq);

person Monika Patel    schedule 19.03.2016    source источник
comment
Я думаю, зависит от скорости вашего сетевого соединения. вы уверены, что используете хорошую сеть?.. если да, попробуйте другой URL.   -  person Jishant    schedule 21.03.2016
comment
@Ancee Я пробовал много URL-адресов. И я использую сеть со скоростью 21 Мбит/с   -  person Monika Patel    schedule 21.03.2016
comment
попадание на тот же сервер?.. и пробовали ли вы попадать по этим URL-адресам в веб-браузере?   -  person Jishant    schedule 21.03.2016
comment
@Ancee Да, я пробовал это в веб-браузере, а также эти API отлично работают на устройствах IOS.   -  person Monika Patel    schedule 21.03.2016


Ответы (1)


Если вы подключаетесь к Rest API с помощью собственного кода, выполните следующие действия.

Увеличьте время ожидания соединения с помощью

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);  // time is in milliseconds
conn.setConnectTimeout(15000);  // so this will wait for 15 seconds

Это может решить вашу проблему.

Если вы используете долину, проверьте этот ответ

person ELITE    schedule 19.03.2016
comment
Я пробовал оба решения. Но опять та же проблема - person Monika Patel; 19.03.2016
comment
Я использую приведенный выше код, и он возвращает мне com.android.volley.TimeoutError - person Monika Patel; 21.03.2016