Различают ли writeTimeout, readTimeout и connectTimeout в Retrofit? - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу опубликовать строку json на какой-то URL. я получаю исключение как

 Exception: java.net.SocketTimeoutException: failed to connect to 

провел поиск по этой проблеме, и люди предлагают увеличить и уменьшить параметры тайм-аута в модификации. Я хочу узнать разницу между writeTimeout, readTimeout и connectTimeout. так что я могу вызвать исключение SocketTimeoutException. вот мой ретро клиент.

    public static Retrofit getClient() {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().writeTimeout(20, TimeUnit.SECONDS).
//.authenticator(new Authen()).

        readTimeout(30, TimeUnit.SECONDS).
                        connectTimeout(20, TimeUnit.SECONDS).
                        addInterceptor(interceptor).build();

        return new Retrofit.Builder()
                .baseUrl(DefinesClass.ITS_URL)
//                .baseUrl("https://reqres.in")
//                .addConverterFactory(GsonConverterFactory.create())
                .addConverterFactory(SimpleXmlConverterFactory.create())
                .client(client)
                .build();


    }

Есть ли способ, которым я могу отсортировать это исключение, помогите, ребята?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Разница между всеми тремя методами указана ниже:

connectTimeout:

Устанавливает время ожидания подключения по умолчанию для новых подключений. Значение 0 означает отсутствие тайм-аута, в противном случае значения должны быть в диапазоне от 1 до Integer.MAX_VALUE при преобразовании в миллисекунды.

connectTimeout применяется при подключении сокета TCP к целевому хосту. Значение по умолчанию составляет 10 секунд.

readTimeout:

Устанавливает время ожидания чтения по умолчанию для новых подключений. Значение 0 означает отсутствие тайм-аута, в противном случае значения должны быть от 1 до Integer.MAX_VALUE при преобразовании в миллисекунды.

Тайм-аут чтения применяется как к сокету TCP, так и к отдельным операциям ввода-вывода чтения, в том числе к источнику ответа. Значение по умолчанию составляет 10 секунд.

writeTimeout:

Устанавливает время записи по умолчанию для новых подключений. Значение 0 означает отсутствие времени ожидания, в противном случае значения должны быть в диапазоне от 1 до Integer.MAX_VALUE при преобразовании в миллисекунды.

Тайм-аут записи применяется для отдельных операций ввода-вывода. Значение по умолчанию составляет 10 секунд.


Источник от здесь .

0 голосов
/ 12 ноября 2018

SocketTimeOut означает, что ваш клиент не может получить доступ к серверу. Попробуйте протестировать веб-сервис в Почтальон .

  • Время ожидания подключения - это время ожидания, применяемое для создания TCP подключение к HTTP-серверу. Если квитирование TCP не завершено в это время, попытка подключения не удалась.
  • Тайм-аут чтения - это тайм-аут, примененный с момента вашего установил соединение (поэтому рукопожатие сделано, и соединение можно использовать). Если данные не поступают с сервера в это время ожидания, соединение разорвано.

То же самое для тайм-аута записи. Мы не смогли ничего записать в заданное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...