B
B
Bur-Burito2016-09-07 05:19:03
.NET
Bur-Burito, 2016-09-07 05:19:03

How to set up an SSL/TLS channel in .NET?

I study at school. Passionate about C# programming. Schildt's reference has an example code that I have provided below. This program, having made a request to the specified URI, receives a stream in response, after reading it, it receives a string with the html code of the requested page, after which it looks for links to other pages in it. And if everything works well with sites like naukatehnika.com and www.nationalgeographic.com , then giants like https://vk.com/ and https://www.facebook.com do not even receive a response. Tell me how you can improve this code in order to receive responses from pages with the https protocol. Or where can it be written about it? I apologize in advance if I formulated the question stupidly, but I hope I conveyed the essence.

// MiniCrawler: Web-такси.
using System;
using System.Net;
using System.IO;
class MiniCrawler
{ 

 // Находим гиперссылку в строке.
 static string FindLink(string htmlstr,
 ref int startloc)
    {
        int i;
        int start, end;
        string uri = null;
        string lowcasestr = htmlstr.ToLower();
        i = lowcasestr.IndexOf("href=\"http", startloc);
        if (i != -1)
        {
            start = htmlstr.IndexOf('"', i) + 1;
            end = htmlstr.IndexOf('"', start);
            uri = htmlstr.Substring(start, end - start);
            startloc = end;
        }
        return uri;
    }
    public static void Main(string[] args)
    {
        string link = null;
        string str;
        string answer;
        int curloc; // Содержит текущую позицию в ответе.
        
        string uristr = "https://www.facebook.com"; // Содержит текущий URI-адрес.
        try
        {
            do
            {
                Console.WriteLine("Переход по адресу " + uristr);
                // Создаем WebRequest-запрос по заданному URI.
                HttpWebRequest req = (HttpWebRequest)
                WebRequest.Create(uristr);
                uristr = null; // Запрещаем дальнейшее
                               // использование этого URI-адреса.
                               // Отсылаем этот запрос и получаем ответ.
                HttpWebResponse resp = (HttpWebResponse)
                req.GetResponse();
                // Из потока, содержащего ответ, получаем
                // входной поток.
                Stream istrm = resp.GetResponseStream();
                // Представляем входной поток
                // в виде StreamReader-объекта.
                StreamReader rdr = new StreamReader(istrm);
                // Считываем целую страницу. 
                
            str = rdr.ReadToEnd();
                curloc = 0;
                do
                {
                    // Находим следующий URI-адрес для перехода
                    // по гиперссылке.
                    link = FindLink(str, ref curloc);
                    if (link != null)
                    {
                        Console.WriteLine("Гиперссылка найдена: " + link);
                        Console.Write("Ссылка, Дальше, Выход?");
                        answer = Console.ReadLine();
                        if (string.Compare(answer, "C", true) == 0)
                        {
                            uristr = string.Copy(link);
                            break;
                        }
                        else if (string.Compare(
                      answer, "B", true) == 0)
                        {
                            break;
                        }
                        else if (string.Compare(
                      answer, "Д", true) == 0)
                        {
                            Console.WriteLine("Поиск следующей ссылки.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Больше ссылок не найдено.");
                        break;
                    }
                } while (link.Length > 0);
                // Закрываем поток, содержащий ответ.
                resp.Close();
            } while (uristr != null);
        }
        catch (WebException exc)
        {
            Console.WriteLine("Сетевая ошибка: " + exc.Message +
            "\nКод состояния: " + exc.Status);
        }
        catch (ProtocolViolationException exc)
        {
            Console.WriteLine("Ошибка протокола: " + exc.Message);
        }
        catch (UriFormatException exc)
        {
            Console.WriteLine("Ошибка в формате URI: " + exc.Message);
        }
        catch (NotSupportedException exc)
        {
            Console.WriteLine("Неизвестный протокол: " + exc.Message);
        }
        catch (IOException exc)
        {
            Console.WriteLine("I/O Error: " + exc.Message);
        }
        Console.WriteLine("Завершение программы MiniCrawler.");
    }
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
B
Bur-Burito, 2016-09-13
@Bur-Burito

Understood. It was the fiddler settings.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question