Как соединиться с сайтом через прокси на c#?

Добрый день!
Соединяюсь с сайтом посредством httpwebrequest.
Когда нет прокси то всё ок, если у пользователя выход в интернет через прокси то запросы не работают. Попробовал даже сделать чтобы пользователь сам забивал свои настройки но тоже не получается.
Делаю вот так:
строка запроса
public string send(string url, string par)
        {
            
                String secondStepForm3 = par;
                HttpWebRequest request3 = (HttpWebRequest)WebRequest.Create(url);
                request3.UserAgent = "Opera/9.80";
                request3.Method = "POST";
                request3.ContentType = "application/x-www-form-urlencoded";
                byte[] EncodedPostParams3 = Encoding.Default.GetBytes(secondStepForm3);
                try
                {
                request3.ContentLength = EncodedPostParams3.Length;
                request3.GetRequestStream().Write(EncodedPostParams3, 0, EncodedPostParams3.Length);
                request3.GetRequestStream().Close();
                HttpWebResponse response = (HttpWebResponse)request3.GetResponse();
                string lol = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
                return lol;
                 }
                catch (Exception)
                {
                    string lol = "NI";
                    return lol;
                }

        }

попытка запроса
string Auth = send("адрес сайта", "login=" + t_login + "&pass=" + t_password);

                    string LoginStatus = Auth;

                    // Делим строку по разделителю
                    String[] AuthResponse = LoginStatus.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
               
                    LoginStatus = AuthResponse[0];

при загрузке формы если пользователь вписал айпи и порт то используем прокси
private void authForm_Load(object sender, EventArgs e)
        {
           
            if (Properties.Settings.Default.proxyIP != "")
            {
                string proxyIp = Properties.Settings.Default.proxyIP;
                string proxyPort = Properties.Settings.Default.proxyPort;
                string urlProxy = "http://" + proxyIp + ":" + proxyPort + "/";
                WebRequest.DefaultWebProxy = new WebProxy("http://" + proxyIp + ":" + proxyPort + "/", true);
            
            }
        }

При попытке соединения приложение возвращает NI, т.е. нет соединения. Что я делаю не так?
В идеале бы конечно чтобы настройки из ИЕ брались. Но хотя бы так)
  • Вопрос задан
  • 3669 просмотров
Решения вопроса 1
Загрузка прокси из app.config
private void LoadProxySetting(HttpWebRequest httpWebRequest)
        {
            var appSetting = ConfigurationManager.AppSettings;
            var p = appSetting.Get("proxyEnable");
            var a = appSetting.Get("proxyAuthEnable");
            WebProxy proxy = null;
            if (p != null && p == "True")
            {
                var host = appSetting.Get("proxyServer");
                var port = appSetting.Get("proxyPort");
                proxy = new WebProxy(host, Int32.Parse(port));
            }
            if (a != null && a == "True" && proxy != null)
            {
                proxy.Credentials = new NetworkCredential(appSetting.Get("proxyUser"), appSetting.Get("proxyPass"));
            }
            httpWebRequest.Proxy = proxy;
        }

Если в настройках пусто, то,
r - в данном случае HttpWebRequest
if (r.Proxy == null)
                r.Proxy = WebRequest.DefaultWebProxy;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы