J'essaie de télécharger une chaîne à partir de n'importe quelle page Web de ma bibliothèque de classes portable. J'ai créé la configuration la plus basique:Télécharger une chaîne à partir d'une URL à l'aide d'une bibliothèque de classes portable (PCL)
- a créé un nouveau projet PCL
- compatible avec WP8 et WinRT, ainsi que les composants obligatoires tels que Silverlight
Comme WebClient n'est pas compatible entre ces systèmes, il n'est pas possible d'utiliser:
string data = new WebClient().DownloadString();
J'ai essayé d'utiliser cela aussi (utilise this):
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = HttpMethod.Get;
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
string data = ""
using (var sr = new StreamReader(response.GetResponseStream()))
{
data = sr.ReadToEnd();
}
Cependant, quand je l'appelle le deuxième jeu de code à partir d'une application externe C# faisant référence à la PCL, le débogueur échoue simplement sans l'avertissement ou une erreur message sur:
request.GetResponseAsync();
Existe-t-il un moyen facile de télécharger une chaîne qui me manque?
* aussi, pourquoi le débogueur sortirait-il simplement sans explication?
Edit:
Voici une autre méthode que j'ai essayé - basé sur une réponse déjà fournie. Encore une fois, cette méthode se ferme simplement et force la fermeture du débogueur.
Méthode PCL:
public static async Task<string> DownloadString()
{
var url = "http://google.com";
var client = new HttpClient();
var data = await client.GetStringAsync(url);
return data;
}
méthode d'appel:
private static async void Method()
{
string data = await PCLProject.Class1.DownloadString();
return data;
}
Vous utilisez ceci en une application de bureau, une application Windows Store, une application WP8, ou quoi voir lorsque vous voyez ce comportement? Êtes-vous sûr d'attendre ou d'attendre toutes les tâches? (Sinon, le programme peut simplement être exécuté et quitter avant la fin du téléchargement.) Si vous utilisez Windows Phone, faites-vous tout ce qui pourrait bloquer le thread de l'interface utilisateur à la fin du téléchargement (par exemple Task.Wait ou Task? Résultat)? –