Получение java.сеть.SocketTimeoutException: время ожидания соединения в android
Я относительно новичок в разработке android. Я разрабатываю приложение для android, где я отправляю запрос на веб-сервер и анализирую объекты json. Часто я получаю java.net.SocketTimeoutException: Connection timed out исключение при общении с сервером. Иногда это будет работать совершенно без каких-либо проблем. Я знаю, что этот вопрос задавали много раз. Но все же я не получил удовлетворительного решения этой проблемы. Я отправляю свой код связи logcat и app-server под.
может ли кто-нибудь помочь мне найти решение для этого? Спасибо заранее.
5 ответов
Я искал по всему интернету и после прочтения многих документов, касающихся исключения тайм-аута соединения, я понял, что предотвращение SocketTimeoutException выходит за рамки нашего предела. Один из способов эффективной обработки-определить тайм-аут соединения,а затем обработать его с помощью блока try catch. надеюсь, это поможет любому в будущем, кто сталкивается с той же проблемой.
Я знаю, что этот вопрос немного старый. Но поскольку я наткнулся на это во время исследования, я подумал, что небольшое дополнение может быть полезно.
как указано, ошибка не может быть решена клиентом, так как это проблема, связанная с сетью. Однако вы можете повторить попытку подключения несколько раз. Это может работать как обходной путь, пока реальная проблема не будет исправлена.
возможно, это кому-то помогает.
Если вы тестируете сервер localhost в ваше Android устройство должно быть подключено к той же локальной сети. Затем URL-адрес сервера, используемый вашим приложением, должен включать IP-адрес вашего компьютера, а не маску «localhost».
Я столкнулся с этой проблемой и решение было перезагрузить модем (роутер). После этого я мог бы подключиться к интернету для своего приложения.
Я думаю, что библиотеку я использую не управлять должным образом, поскольку это happeend всего несколько раз.
Источник
Timeout
The HttpTimeout plugin (previously known as feature) allows you to configure the following timeouts:
request timeout — a time period required to process an HTTP call: from sending a request to receiving a response.
connection timeout — a time period in which a client should establish a connection with a server.
socket timeout — a maximum time of inactivity between two data packets when exchanging data with a server.
You can specify these timeouts for all requests or only specific ones.
Add dependencies
HttpTimeout only requires the ktor-client-core artifact and doesn’t need any specific dependencies.
Install HttpTimeout
To install HttpTimeout , pass it to the install function inside a client configuration block:
Configure timeouts
To configure timeouts, you can use corresponding properties:
You can specify timeouts for all requests inside the install block. The code sample below shows how to set a request timout using requestTimeoutMillis :
If you need to set a timeout only for a specific request, use the HttpRequestBuilder.timeout property:
Note that timeouts specified for a specific request override global timeouts from the install block.
In a case of a timeout, Ktor throws HttpRequestTimeoutException , HttpConnectTimeoutException , or HttpSocketTimeoutException .
Limitations
HttpTimeout has some limitations for specific engines:
iOS doesn’t support a connection timeout.
JavaScript supports only a request timeout.
Источник