Что я делаю неправильно?Мой тайм-аут не работает - PullRequest
0 голосов
/ 28 декабря 2018

Я изменил Wi-Fi IP, чтобы не иметь возможности подключиться.Я хочу, чтобы, когда проход 5 секунд делал что-то еще, он ждал около 20 секунд.

URL url = null;
HttpsURLConnection conn = null;

try {
    url = new URL("MY_URL");
    conn = (HttpsURLConnection) url.openConnection();
    conn.setReadTimeout(3000);
    conn.setConnectTimeout(5000);
    conn.setRequestMethod("POST");
    conn.setDoInput(true);
    conn.setDoOutput(true);

    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("msg", String.valueOf(jsonArray)));

    OutputStream os = conn.getOutputStream();
    BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
    writer.write(getQuery(params));
    writer.flush();
    writer.close();
    conn.connect();

    BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream) conn.getContent(), "UTF-8"));

    String response = reader.readLine();

1 Ответ

0 голосов
/ 28 декабря 2018

Из документации

Предупреждение. Если имя хоста разрешается на несколько IP-адресов, стандартная реализация Android HttpURLConnection будет пробовать каждый в порядке RFC 3484.Если не удается подключиться к каждому из этих адресов, истечет время ожидания, прежде чем попытка подключения вызовет исключение.Имена хостов, которые поддерживают как IPv6, так и IPv4, всегда имеют как минимум 2 IP-адреса.

Это означает, что если для хоста задействовано "n" IP-адресов, это займет n*milliseconds время вместо millisecondsВы защищаете.

...