У меня много проблем с использованием веб-запросов в MonoDroid и случайным тайм-аутом. Мой код работает нормально, иногда все запросы просто истекают и не работают.
Я убедился, что проблема не в веб-сервисах, используемых в моих запросах.
Вот пример кода, который я могу использовать для запроса некоторых данных из веб-сервиса с помощью MonoDroid:
bool bolOk = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("http://www.website.com/service/");
request.Timeout = 20000;
request.Credentials = gv_objCredentials;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse ()) {
bolOk = response.StatusCode == HttpStatusCode.OK;
}
Как видите, это базовые вещи.Я использую код, подобный приведенному выше, всегда в другом потоке пользовательского интерфейса, используя ThreadPool.QueueUserWorkItem или TaskFactory.
Что я заметил, так это то, что если запросы из моего приложения начинают истекать по таймауту, и я подключаю его к своему компьютеру, а затем отлаживаю приложение из MonoDevelop, запросы работают без таймаута. Я не уверен, что это что-то значит. Это похоже на тестирование веб-сервисов с моего компьютера с помощью браузера в той же сети, что и телефон. Веб-сервисы всегда работают без проблем.
Как лучше всего делать веб-запросы из MonoDroid?
Как я могу гарантировать, что мои запросы всегда будут успешными и не истечет время ожидания, если веб-служба работает правильно?