WebClient и кэширование

Задача

Приложение для WP7 с WebClient для получения данных с url. При каждом обращении к данному url в браузере данные обновляются.

Проблема

Есть функция, которая должна при каждом ее вызове должна получать данные с определенного url:

void LoadRandomData() {
  WebClient wclientRandom = new WebClient();
  string url = "http://localhost/random.php";

  wclientRandom.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wclientRandom_DownloadStringCompleted);
  wclientRandom.DownloadStringAsync(new Uri(url));
}

void wclientRandom_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
  string result = e.Result;
  // делаем дела.
}

Но при получении данных программно из WP7 приложения данные возвращаются каждый раз одни и те же. То есть при вызове LoadRandomData() в e.Result всегда получали одну и ту же строку.

Решение

Решение оказалось до безобразия простым: добавляем случайный get-параметр и при каждом вызове будем получать новые данные:

void LoadRandomData() {
  WebClient wclientRandom = new WebClient();
  string url = "http://localhost/random.php?r=" + DateTime.Now.Ticks.ToString();

  wclientRandom.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wclientRandom_DownloadStringCompleted);
  wclientRandom.DownloadStringAsync(new Uri(url));
}

void wclientRandom_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
  // делаем дела.
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s