При получении информации о файле (по ссылке) выдается ошибка 404 UWP - PullRequest
0 голосов

Перед загрузкой файла по ссылке мне нужно получить некоторые из его данных (имя, размер, тип содержимого и т. Д. c.)

            WebResponse response = null;
            using (token.Token.Register(() => client.Abort(), useSynchronizationContext: false))
            {
                response = await Task.Run(() => client.GetResponseAsync()).ConfigureAwait(true);
                token.Token.ThrowIfCancellationRequested();
            }

после того, как я проверю тип клиента и получу необходимая информация. Но есть ссылки, по которым я не могу получить данные. При вызове

response = await Task.Run (() => client.GetResponseAsync ())

возвращается ошибка 404. Что делать? Я беру в пример ссылки с https://www.mp3juices.cc/

1 Ответ

0 голосов
/ 13 июля 2020

Запрошенный вами адрес загрузки не применяется к обработке WebRequest, он не указывает на веб-страницу или файл.

При доступе к URL-адресу он фактически обрабатывается программой обработки веб-сайта и возвращает файл . WebRequest получает прямой доступ к URL-адресу и не может получить возвращенные данные.

Если вы хотите это проверить, вы можете использовать BackgroundDownloader , чтобы напрямую загрузить файл, соответствующий URL-адресу.

private StorageFile destinationFile;
private async void Button_Click(object sender, RoutedEventArgs e)
{
    Uri url = new Uri(Link.Text);

    destinationFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(
        "test.html", CreationCollisionOption.GenerateUniqueName);

    BackgroundDownloader downloader = new BackgroundDownloader();
    DownloadOperation download = downloader.CreateDownload(url, destinationFile);
    download.RangesDownloaded += DownloadHandle;
    await download.StartAsync();
}

private async void DownloadHandle(DownloadOperation sender, BackgroundTransferRangesDownloadedEventArgs args)
{
    string content = await FileIO.ReadTextAsync(destinationFile);
    Debug.WriteLine(content);
}

Спасибо.

...