Задать вопрос
garinov
@garinov
Фрилансер

Страницы нет, но сервер возвращает «200», как в этой ситуации понять, что страницы все-таки нет?

Например, с таким урлом: https://XN--80APMGLWL.XN--P1AI/в/Москва/Мебельная_...
На самом деле там только 21 страница. Остальные выводятся пустыми.

Как в этой ситуации понять, что страницы все-таки нет?

using System;
using System.Net;

namespace ResponseTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://XN--80APMGLWL.XN--P1AI/в/Москва/Мебельная_фурнитура/стр_210";
            int statusCode;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.AllowAutoRedirect = false;
                request.Method = WebRequestMethods.Http.Head;
                request.Accept = @"*/*";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                statusCode = (int)response.StatusCode;
                response.Close();
            }
            catch (WebException ex)
            {
                if (ex.Response == null)
                    throw;
                statusCode = (int)((HttpWebResponse)ex.Response).StatusCode;
            }

            Console.WriteLine(url);
            Console.WriteLine(statusCode);
            Console.ReadKey();
        }
    }
}
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
tomnolane
@tomnolane
профессиональный разработчик
3a42bbeb01de4099b5dc0464d9b3331a.PNG
страница есть... почему-же её нет?

если указать
string url = "https://XN--80APMGLWL.XN--P1AI/в/Москва/Мебельная_фурнитура/стр_11210";

то тогда страницы действительно нет, и (у данного сайта) statusCode будет 302 (редирект на https://офирмах.рф/404.htm )

UPD
1) измените request.Method с HEAD на GET
2) полный код:
string url = "https://XN--80APMGLWL.XN--P1AI/в/Москва/Мебельная_фурнитура/стр_11210";
            int statusCode;
            string html;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.AllowAutoRedirect = false;
                request.Method = WebRequestMethods.Http.Get;
                request.Accept = @"*/*";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                statusCode = (int)response.StatusCode;
                

                using (StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    html = stream.ReadToEnd();
                }
                response.Close();


                if(!html.Contains("card"))  Console.WriteLine("страницы не существует");
                else Console.WriteLine("страница существует!");

            }
            catch (WebException ex)
            {
                if (ex.Response == null)
                    throw;
                statusCode = (int)((HttpWebResponse)ex.Response).StatusCode;
            }

            //Console.WriteLine(url);
            //Console.WriteLine(statusCode);
            Console.ReadKey();


profit
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы