Возможный дубликат:
Время ожидания запроса на получение, несмотря на то, что время ожидания соединения и время ожидания чтения установлено по умолчанию (бесконечно)?
Я попытался подключиться к веб-службе и получил SocketTimeoutException
примерно через 20 секунд. Сервер Tomcat, на котором размещается веб-служба, не работает, поэтому ожидается Exception
. Однако я не устанавливал значения своих ConnectTimeout и ReadTimeout. Согласно документации, значения этих двух по умолчанию бесконечны.
Одна из возможностей для этого заключается в том, что сервер, к которому я пытался подключиться, имеет собственный тайм-аут. Но когда мой друг попытался подключиться к нему с помощью iOS, время его подключения истекло примерно через 1 минуту 15 секунд. Если сервер выдает тайм-аут, время ожидания нашего соединения должно было истечь почти в то же время. Обратите внимание, что он также использует время по умолчанию вне iOS.
- Почему время ожидания моего сокета истекло так рано, когда время ожидания подключения и чтения установлено на бесконечность?
- Тайм-аут сокета отличается от тайм-аута подключения и чтения? Если да, то чем он отличается?
- Как я могу узнать значение тайм-аута моего сокета? Я использую HttpURLConnection.
- Есть ли способ установить время ожидания сокета? Как?
Ниже приведен фрагмент моего кода:
httpURLConnection = (HttpURLConnection) ((new URL("http://www.website.com/webservice")).openConnection());
httpURLConnection.setDoInput(isDoInput);
httpURLConnection.setDoOutput(isDoOutput);
httpURLConnection.setRequestMethod(method);
try
{
OutputStreamWriter writer = new OutputStreamWriter(httpURLConnection.getOutputStream());
writer.write("param1=value1");
writer.flush;
}catch(Exception e)
{
}