MonoDroid HttpWebRequest и WebClient ненадежны?

У меня много проблем с использованием веб-запросов в 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?

Как я могу гарантировать, что мои запросы всегда будут успешными и не истечет время ожидания, если веб-служба работает правильно?

6
задан startupsmith 20 June 2012 в 00:05
поделиться