Я звоню в веб-службу из приложения Android. Когда я использую AVD, все в порядке, и у меня есть ответ от сервера, но когда я запускаю свое настоящее устройство (HTC), я получаю "Тайм-аут операции". Скорость интернета на устройстве хороша, например, Карты Google загружаются очень быстро.
Для подключения к серверу я использую ksoap2:
SoapObject request = new SoapObject(getString(R.string.NAMESPACE), getString(R.string.METHOD_NAME));
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
int Timeout = 10000;
HttpTransportSE androidHttpTransport = new HttpTransportSE(FullURL, Timeout);
try {
androidHttpTransport.call(getString(R.string.SOAP_ACTION), envelope);
return envelope.getResponse().toString();
}
catch (Exception e) {
return ("ERROR:" + e.getMessage());
}
URL-адрес содержит IP-адрес сервера, например
Почему существует ошибка времени на реальном устройстве и как заставить его работать нормально?
Вы должны установить время ожидания подключения и тайм-аут сокета для реальных устройств. Вы должны установить значения таймаута соответствующим образом. По истечении этого времени будет получено исключение, поймать это исключение и показать предупреждение, например "Плохая сеть".
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 10000);
int timeoutSocket = 60*1000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
У меня была такая же проблема. Решение, которое я нашел, это то, что телефон использует соединения WiFi или 3g, а веб-служба, на которую я ссылался, имела какой-то брандмауэр.
Итак, я заменил IP-адрес в URL (например: "http://10.0.0.0" ) на имя хоста (пример: "http://abc.com" ).
Я решил подобную проблему, создав правило в брандмауэре на моей машине разработки, чтобы разрешить удаленные соединения на порту 80.
Я сталкиваюсь с этой ситуацией при разработке моего проекта и нашел решение, которое я описываю ниже:
Отключите брандмауэр Windows от Control Panel -> Windows Firewall and click on Turns Windows Firewall on or off to turn off your Windows Firewall.
Тогда ваше приложение отлично работает.
У меня такой тип ошибки, когда я тестировал свое приложение на локальном сервере. Я использовал IP-адрес системы, он отлично работает. Если у кого-то такая же проблема, сначала проверьте IP-адрес своего URL-адреса. Надеюсь, это поможет другим которые тестируют приложение на локальном сервере.
Вчера я использовал эту ссылку для веб-сервиса http://192.168.1.7/DemoAndroid/Loginwebservice.php?username=john&dob=1234. и он работает нормально, но сегодня, когда я использовал ту же ссылку, он дал мне ошибку
время работы
поэтому я проверил свой системный IP-адрес, и это было не так, как указано в url.so я скопировал этот IP-адрес и Paste in above url, и он снова работает.