У нас есть следующий код.
Иногда мы должны ожидать 20.10.40 секунд на последней строке.
Какова может быть проблема?
Java 1.4
URL url = ...;
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.connect();
OutputStream out = conn.getOutputStream();
ObjectOutputStream outStream = new ObjectOutputStream(out);
try
{
outStream.writeObject(objArray);
}
finally
{
outStream.close();
}
InputStream input = conn.getInputStream();
ОБНОВЛЕННЫЙ:
Следующий код решает проблему В Eclipse.
Но это все еще НЕ РАБОТАЕТ через Java WebStart: (
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
System.setProperty("http.keepAlive", "false"); //<---------------
conn.connect();
Но почему?
ОБНОВЛЕННЫЙ еще раз!
Ошибка была исправлена!:)
Мы работали с соединениями не в одном классе, а в два.
И там следует за строкой во втором классе:
URL url = ...
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Length", "1000"); //<------------
conn.connect();
Примечание: setRequestProperty("Content-Length", "1000")
первопричина проблемы.
'У нас была аналогичная проблема, которая вызвана ошибкой проверки активности в старой версии Java. Добавьте это перед подключением, чтобы увидеть, поможет ли это,
conn.setRequestProperty("Connection", "close");
или
System.setProperty("http.keepAlive", "false");
Попробуйте использовать IP-адрес. Чтобы узнать, не проблема ли это DNS.
Проблема может быть в чем-то на сетевом подуровне ... Ее будет трудно найти.
Но как насчет setReadTimeOut ()
с низким значением и цикл while?
Я могу предположить, что ваш DNS-сервер плохо отвечает.
Можете ли вы поэкспериментировать с заменой символьных доменных имен на числовые IP-адреса перед тем, как начать? Или вы можете выполнить каждый запрос дважды (просто для экспериментов) и посмотреть, будет ли первый запрос значительно медленнее второго?
Google установил DNS-сервер (среди прочего) на 8.8.8.8. Они утверждают, что это быстрее, чем большинство других DNS-серверов. Попробуйте!