HttpClient.GetAsync (requestUri) не получает весь контент из URL - PullRequest
3 голосов
/ 05 октября 2019

После обновления версии пакета Microsoft.NETCore.UniversalWindowsPlatform в моем приложении UWP с 5.0.0 до 6.2.9, HttpClient.GetAsync(requestUri) не загружает весь контент с URL.

Я использую HttpClient.GetAsync() дляполучить содержимое страницы, а затем извлечь из нее некоторую информацию. например ссылка . С 5.0.0 она работала как ожидалось, и весь контент страницы был загружен. Но после обновления до 6.2.9 похоже, что только схема загружается , а не содержимое .

Одна вещь, которую я заметил, это то, что расположение System.Net.Http.dll имеетмежду версиями:

  • 5.0.0: C: \ Users \ xx.nuget \ packages \ system.net.http \ 4.0.0 \ ref \ netcore50 \ System.Net. Http.dll

  • 6.2.9: C: \ Program Files (x86) \ Microsoft SDKs \ UWPNuGetPackages \ system.net.http \ 4.1.0 \ ref \ netcore50 \ System.Net.Http.dll

Это код, который я использую:

public static async void GetDataAsync(string url, Action<string> OnSuccess, Action<string> OnFailure)
{
    HttpClient _floatHttpClient = new HttpClient();
    string responseText = null;
    try
    {
        HttpResponseMessage response = await _floatHttpClient.GetAsync(url);

        response.EnsureSuccessStatusCode();
        responseText = await response.Content.ReadAsStringAsync();
        OnSuccess(responseText);
    }
    catch (Exception ex)
    {
        OnFailure(ex.ToString());
    }
}

Как загрузить полный контент из URL с пакетом 6.2.9?

Это метод вызова.

private void def_click(object sender, RoutedEventArgs e)
{
    DictDialog dictDialog = new DictDialog(Contentgrid.ActualWidth, Contentgrid.ActualHeight);
    dictDialog.ShowAsync();

    string url = "https://www.bing.com/search?q=+definition:" + dictWord + "&setmkt=en-us&setlang=en-us";

    WebRequest.GetDataAsync(url, (string html) =>
    {
        if (html != null)
        {
            bool defFound = false;
            string def = readerVM.GetDefinitionBing(html, out defFound);

            if (defFound == true)
            {
                dictDialog.LoadHtml(def);
            }
            else
            {
                dictDialog.ShowNoDefMsg();
            }
        }
        else
        {
            dictDialog.LoadFailed();
        }
    },
    (string error) =>
    {
        dictDialog.LoadFailed();
    });
}
...