Я пытаюсь загрузить строку с ЛЮБОЙ веб-страницы в моей портативной библиотеке классов. Я создал самые основные настройки:Загрузите строку из URL-адреса с помощью переносимой библиотеки классов (PCL)
- создал новый проект PCL
- совместимый с WP8 и WinRT, а также обязательные компоненты, такие как Silverlight
Как WebClient не является совместимым в этих системах, невозможно использовать:
string data = new WebClient().DownloadString();
Я попытался использовать это как хорошо (использует 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();
}
Однако, когда я называю второй набор кода из внешнего C# приложения, ссылающегося на PCL, отладчик просто выдает предупреждение или ошибка сообщение:
request.GetResponseAsync();
Есть ли простой способ загрузить строку, которую мне не хватает?
* также, почему отладчик просто выйдет без объяснений?
Edit:
Вот еще один метод, который я пытался - на основе ответа, уже предоставленной. Опять же, этот метод просто выходит и принудительно закрывает отладчик.
PCL Метод:
public static async Task<string> DownloadString()
{
var url = "http://google.com";
var client = new HttpClient();
var data = await client.GetStringAsync(url);
return data;
}
метод вызова:
private static async void Method()
{
string data = await PCLProject.Class1.DownloadString();
return data;
}
Вы используете это в приложение для настольных компьютеров, приложение Windows Store, приложение WP8 или что, когда вы видите это поведение? Вы уверены, что ожидаете или ожидаете выполнения всех задач? (В противном случае программа может просто запуститься до завершения и выйти до завершения загрузки.) Если вы находитесь на Windows Phone, делаете ли вы что-либо, что блокирует поток пользовательского интерфейса при завершении загрузки (то есть через Task.Wait или Task. Результат)? –