Clever-1945
12/1/2017 - 5:00 AM

Русское имя сайта #CSharp

Русское имя сайта #CSharp

//Преобразует русскоязычную ссылку 
Url = new IdnMapping().GetAscii(Url);

//Сайтов с русским именем не существует
//Однако если в адресной строке браузера прописать русские буквы то сам браузер перенаправит на сайт с аннглоизычным именем

//Конвертация русского имени сайта в англоизичное

/// <summary> Проверка сайта на существование </summary>
/// <param name="WebSite"></param>
        /// <returns></returns>
        public static bool pingWebSite(string WebSite)
        {
            if (String.IsNullOrWhiteSpace(WebSite))
                return false;

            if (WebSite.Trim().ToLower().IndexOf("http://") != 0 && WebSite.Trim().ToLower().IndexOf("https://") != 0)
                WebSite = "http://" + WebSite.Trim();

            WebSite = WebSite.IndexOf("?") > 0 ? WebSite.Substring(0, WebSite.IndexOf("?")) : WebSite;
            WebSite = WebSite.IndexOf("&") > 0 ? WebSite.Substring(0, WebSite.IndexOf("&")) : WebSite;

            if (String.IsNullOrWhiteSpace(WebSite))
                return false;

            while (!String.IsNullOrWhiteSpace(WebSite) && (WebSite.Last() == '/' || WebSite.Last() == '\\'))
                WebSite = WebSite.Remove(WebSite.Length - 1, 1).Trim();

            IdnMapping idn = new IdnMapping();
            if (WebSite.Trim().ToLower().IndexOf("http://") == 0)
                WebSite = "http://" + idn.GetAscii(WebSite.Remove(0, 7));
            if (WebSite.Trim().ToLower().IndexOf("https://") == 0)
                WebSite = "https://" + idn.GetAscii(WebSite.Remove(0, 7));

            try
            {
                WebClient client = new WebClient();
                Uri uri = new Uri(WebSite);
                 
                client.DownloadData(uri);
                string text = client.DownloadString(uri);
                if (!String.IsNullOrWhiteSpace(text))
                    return true;
                return false;
            }
            catch (WebException ex)
            {
                HttpWebResponse response = (System.Net.HttpWebResponse)ex.Response;
                if (response != null && response.StatusCode == HttpStatusCode.BadRequest)
                    return true;
                return false;
            }
            catch (Exception ex)
            {
                return false;
            }
        }