Загрузка файлов из Google Books

#c# #console-application

#c# #консольное приложение

Вопрос:

Я пишу очень простое приложение. Предполагается загружать файлы из Интернета. У меня есть URL-адреса и имена файлов для сохранения в таблицах. Но мой код не работает.

 for (int i = 1; i < links.Length; i  )
{
    Uri uri = new Uri(links[i]);

    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
    webRequest.Method = "GET";

    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();

    Stream responseStream = webResponse.GetResponseStream();
    StreamReader responseStreamReader = new StreamReader(responseStream);
    String result = responseStreamReader.ReadToEnd();

    StreamWriter w = new StreamWriter(savepath   names[i]);
    w.Write(result);
    w.Close();

    break;
}
  

пример URL:
http://books.google.pl/books?id=yOz1ePt39WQCamp;pg=PA2amp;img=1amp;zoom=3amp;hl=plamp;sig=ACfU3U0MDQtXGU_3YVqGvcsDiWLLcKh0KAamp;w=800amp;gbd=1

пример названия: 002.png

Файлы должны быть сохранены в виде изображения PNG, но вместо этого я получаю что-то, начинающееся с <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Второй вопрос. Как я могу обнаружить ошибку HTTP 404 при попытке загрузки?

РЕДАКТИРОВАТЬ: Я виноват. мои ссылки были неверными. После замены amp;amp; на amp; они верны. Ссылка на пример (исправлена):

http://books.google.pl/books?id=yOz1ePt39WQCamp;pg=PA2amp;img=1amp;zoom=3amp;hl=plamp;sig=ACfU3U0MDQtXGU_3YVqGvcsDiWLLcKh0KAamp;w=800amp;gbd=1

Несмотря на это, я все еще не могу правильно загружать PNGS. Они не открываются. Но, по крайней мере, это не HTML-страницы. Я думаю, что пытаться сохранить их в виде строки — не очень хорошая идея. Но я не знаю, как еще я мог бы это сделать. Может быть, используя byte[] или что-то в этомроде?

Комментарии:

1. Если вы перейдете по этому URL вручную, вы попадете на HTML-страницу…

2. Я понял, что мои ссылки были неверными. Я внес правку.

Ответ №1:

Вы пробовали WebClient.Загрузить файл?

 string url = "http://books.google.pl/books?id=yOz1ePt39WQCamp;pg=PA2amp;img=1amp;zoom=3amp;hl=plamp;sig=ACfU3U0MDQtXGU_3YVqGvcsDiWLLcKh0KAamp;w=800amp;gbd=1";
string file = "002.png";

WebClient wc = new WebClient();
wc.DownloadFile(url, file);
  

сохранит изображение в каталоге приложения как 002.png.