C # Webclient возвращает ошибку 404

Я использую ниже сценарий для извлечения HTML из URL.

string webURL = @"https://nl.wiktionary.org/wiki/" + word.ToLower(); using (WebClient client = new WebClient()) { string htmlCode = client.DownloadString(webURL); } 

Переменным словом может быть любое слово. В случае отсутствия страницы WIKI для получения «слова» код заканчивается ошибкой с кодом 404, в то время как поиск URL-адреса с браузером открывает страницу WIKI, говоря, что страницы для этого элемента пока нет.

Я хочу, чтобы код всегда получал HTML-код, также, когда страница WIKI говорит, что информации пока нет. Я не хочу избегать ошибки 404 с попыткой и уловом.

У кого-нибудь есть идея, почему это не работает с Webclient?

попробуй это. Вы можете поймать содержимое ошибки 404 в блоке catch try.

  var word = Console.ReadLine(); string webURL = @"https://nl.wiktionary.org/wiki/" + word.ToLower(); using (WebClient client = new WebClient() { }) { try { string htmlCode = client.DownloadString(webURL); } catch (WebException exception) { string responseText=string.Empty; var responseStream = exception.Response?.GetResponseStream(); if (responseStream != null) { using (var reader = new StreamReader(responseStream)) { responseText = reader.ReadToEnd(); } } Console.WriteLine(responseText); } } Console.ReadLine(); 

Поскольку этот WIKI-сервер использует картографирование url с учетом регистра, просто не изменяйте пример URL для сбора урожая (удалите «.ToLower ()» из вашего кода).

Пример: Нижний регистр:
https://nl.wiktionary.org/wiki/categorie:onderwerpen_in_het_nynorsk
Результат: HTTP 404 (не найдено)

Обычный (немодифицированный) случай:
https://nl.wiktionary.org/wiki/Categorie:Onderwerpen_in_het_Nynorsk
Результат: HTTP 200 (OK)

Кроме того, имейте в виду, что большинство (если не все) серверов WiKi (включая этот) генерируют пользовательские 404 страницы, поэтому в браузере они выглядят как «обычные» страницы, но, несмотря на это, они обслуживают 404 http-кода.