Pourquoi le HttpClient me donne toujours la même réponse?

Environnement:
VS2012 Update 4
Kit de développement logiciel Windows Phone 8
un nouveau projet Windows Phone basé sur WP OS 7.1
NuGet pack1: MS Async
NuGet pack2: MS HttpClient

Que fait le projet
un seul test pour une API de forum:
pour publier un nouveau fil de discussion sur le forum et actualiser le JSON pour vérifier si le “nombre” est accumulé.

Quelle est la signification de l’interface utilisateur
entrez la description de l'image ici
1er bloc de texte:
la réponse json s’affichera ici

3 boutons:
[refresh JSON]: utilisez API1 pour actualiser la liste des threads
[Nouveau message]: utilisez API2 pour publier un nouveau fil de discussion sur le forum. Le titre et le texte s’afficheront ci-dessous.
[IE]: ouvrir JSON dans IE utiliser API1

Informations de fil:
le fil que vous venez de poster utilise le bouton [nouveau message]

Que signifie le JSON
seulement besoin de se concentrer 2 parties
count: 244 —> le nombre total de sujets compte dans le forum
“57923” —> le titre du 1er thread (le champ “data” est un tableau de la liste des threads)

Quelle est la procédure de test
1. ouvrez l’application
2. cliquez sur [refresh JSON] pour obtenir la liste
3. rappelez-vous la partie “compte” et le “titre” du 1er fil
4. cliquez sur [Nouveau message] pour publier un nouveau fil de discussion. Le titre du fil de discussion apparaîtra ci-dessous.
5. cliquez sur [Actualiser JSON] pour voir la liste des derniers fils
6. attendu: le “compte” s’accumule par 1 et la partie “titre” doit être identique à celle ci-dessous

Problème:
1. Après avoir cliqué sur le [Nouveau message], quel que soit le nombre de fois que vous avez cliqué sur [Actualiser JSON], le nombre ne s’accumule pas!

2. mais ouvrez l’URL dans Chrome (Desktop), vous constaterez que le JSON a déjà été mis à jour!

3. fermez l’application et rouvrez-la, appuyez sur [Actualiser JSON], le JSON sera mis à jour comme prévu, mais lorsque vous publiez un nouveau fil de discussion, le problème se reproduit.

Pourquoi et comment le résoudre?

Le code

private async void RefreshJSONButton_Click(object sender, RoutedEventArgs e) { this.JsonView.Text = ssortingng.Empty; HttpClient client = new HttpClient(); ssortingng url = "API1 Address Here"; ssortingng x = await client.GetSsortingngAsync(url); this.JsonView.Text = x; client.Dispose(); } private async void NewPostButton_Click_1(object sender, RoutedEventArgs e) { Random rnd = new Random(); this.num = rnd.Next(1, 99999); // generate the title and content with random number ssortingng threadTitle = this.num.ToSsortingng(); ssortingng threadContent = "111" + num.ToSsortingng(); // generate the url ssortingng url = "API2 Address Here"; url = url + "&title=" + threadTitle + "&content=" + threadContent; // use HttpClient to send the new thread HttpClient client = new HttpClient(); ssortingng x = await client.GetSsortingngAsync(url); client.Dispose(); // display the thread informartion for further check this.titleView.Text = threadTitle; this.contentView.Text = threadContent; } 

Il semble que vous frappiez la même URL à chaque clic de rafraîchissement. Parfois, Windows Phone stocke la demande et la réponse dans le cache.

Si possible, vous ajoutez un paramètre supplémentaire à votre demande et, à chaque clic, vous ne modifiez que la valeur de ce paramètre. Vous pouvez utiliser le GUID ou l’horodatage Unix.

Vous pouvez essayer comme:

  private async void RefreshJSONButton_Click(object sender, RoutedEventArgs e) { this.JsonView.Text = ssortingng.Empty; HttpClient client = new HttpClient(); int unixTimestamp = (int)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; ssortingng url = "http://API1 Address Here/Your queries&temp=unixTimestamp"; ssortingng x = await client.GetSsortingngAsync(url); this.JsonView.Text = x; client.Dispose(); }