none
WebClient через прокси сервер RRS feed

  • Общие обсуждения

  • Всем привет!

    Нарот подскажите что не так, код:

    private void Form1_Shown(object sender, EventArgs e)
    
     {
    
      richTextBox1.Clear();
    
      var Client = new System.Net.WebClient();
    
      System.Net.WebProxy Proxy = new System.Net.WebProxy("ххх.ххх.ххх.ххх", хххх);
    
      Client.Proxy = Proxy;
    
      Client.UseDefaultCredentials = true;
    
      string[] Quotes = null;
    
      try
    
      {
    
      Quotes = Parse(Client.DownloadString("http://bash.org.ru"));
    
      }
    
      catch (System.Net.WebException ex)
    
      {
    
      
    
      }
    
    
    
      bool Colored = false;
    
      foreach (string s in Quotes)
    
      {
    
      if (Colored)
    
      {
    
       richTextBox1.SelectionColor = Color.Blue;
    
       richTextBox1.AppendText(s + "\n\n");
    
       Colored = false;
    
      }
    
      else
    
      {
    
       richTextBox1.SelectionColor = Color.Black;
    
       richTextBox1.AppendText(s + "\n\n");
    
       Colored = true;
    
      }
    
      }
    
     }
    
    
    
     private string[] Parse(string Text)
    
     {
    
      ArrayList Quotes = new ArrayList();
    
      string[] Strings = Text.Split('\n');
    
      bool BeginCapture = false;
    
      bool BeginQuote = false;
    
      foreach (string s in Strings)
    
      {
    
      if (s.Trim() == "<div class=\"vote\">")
    
      {
    
       BeginCapture = true;
    
      }
    
      if (BeginCapture)
    
      {
    
       if (s.Trim() == "</div>")
    
       {
    
       BeginCapture = false;
    
       BeginQuote = true;
    
       }
    
      }
    
      if (BeginQuote)
    
      {
    
       if (s.Contains("<div>") & s.Contains("</div>"))
    
       {
    
       string Temp = s.Trim();
    
       Temp = Temp.Substring(5, Temp.Length - 6);
    
       Temp = Temp.Substring(0, Temp.Length - 5);
    
       Quotes.Add(Temp);
    
       BeginQuote = false;
    
       }
    
      }
    
      }
    
      string[] Result = new string[Quotes.Count];
    
      for (int i = 0; i < Quotes.Count; i++)
    
      {
    
      Result[i] = (Quotes[i] as string).Replace("&quot;", "\"").Replace("<br>", "\n");
    
      }
    
      return Result;
    
     }
    
    

    в методе Client.DownloadString возникает исключение, содержимое ex:

    {"Удаленный сервер возвратил ошибку: (407) Требуется проверка подлинности посредника."}

    Что не так?

    Куда копать?

    Сеть доменная, прокся, браузер аутентифицируется под текущей учеткой.

     


    • Изменено JusteG 19 апреля 2011 г. 11:14
    • Изменен тип Abolmasov Dmitry 5 июня 2011 г. 6:55
    13 апреля 2011 г. 23:58

Все ответы

  • Новые вводные господа.

    Из разговора со специалистом следует, что для того что-бы подключиться к интернету, необходимо пройти аутентификацию NTLM.

    What is this? Как это реализовать? Что это вообще?

    14 апреля 2011 г. 6:44
  • Попробуйте задать для client.Credentials = CredentialCache.DefaultCredentials;

    или попробуйте сделать задание Credentials аналогично этому - HttpWebRequest NetworkCredential with NTLM authentication

     


    Для связи [mail]
    15 апреля 2011 г. 6:11
  • Не выходит, каменный цветок. Перепробовал все возможные комбинации. Неработает.

    Какие еще будут предложения?


    Может я что не так делаю? Попробовал запустить указанный вами код, вот что получилось.

    19 апреля 2011 г. 1:14
  • Добавил обработчик exception'a, вот сведения об ошибке.

    Ребят помогите кто шарит... Надо очень.


    19 апреля 2011 г. 4:54
  • Может еще полезной будет информация, что адекватно работать в нашей сети может только IE все остальные браузеры либо вовсе не работают, либо работают как одноногий неграмотный эстонец.
    19 апреля 2011 г. 11:26
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]
    26 апреля 2011 г. 9:47
  • Сабж все еще актуален. У когонить есть соображения?
    26 апреля 2011 г. 17:10
  • Сабж все еще актуален. У когонить есть соображения?


    Попробуйте задать

    WebProxy.Credentials
    
    Скорее всего нужны доменные удостоверения.
    Все должно быть просто, очень просто, настолько просто, насколько это возможно.
    27 апреля 2011 г. 7:08
  • JusteG, вы попробовали вариант Евгения? Есть какие-нибудь результаты?
    Для связи [mail]
  • Добрый день!

     

    Скорее всего не хватает аутентификации для прокси. Если у вас в прокси логинится с доменной учеткой, то достаточно бывает данной строки:

    client.Proxy.Credentials = CredentialCache.DefaultCredentials;

     

    Для себя использую следующий вариант работы с прокси:

          String message = String.Empty;
    
          HttpWebRequest client = WebRequest.Create("http://bash.org.ru") as HttpWebRequest;
    
    			// или GET для получения страницы
          client.Method = "POST";
          // для прокси
          client.Proxy.Credentials = CredentialCache.DefaultCredentials;
          //client.UseDefaultCredentials = true;
    
          // сообщение
    
          // отправка сообщения (если данный блок закоментить, то просто получение ответа) 
          message = "какое-то сообщение";
    
          client.ContentType = "application/x-www-form-urlencoded";
          client.ContentLength = message.Length;
    
          StreamWriter myWriter = null;
          try
          {
            myWriter = new StreamWriter(client.GetRequestStream());
            myWriter.Write(message);
          }
          catch (Exception)
          {
          }
          finally
          {
            myWriter.Close();
          }
    
    
    			// получение ответа
          HttpWebResponse response = client.GetResponse() as HttpWebResponse;
    
          String rspMsg;
          using (StreamReader stream = new StreamReader(response.GetResponseStream()))
          {
            rspMsg = stream.ReadToEnd();
            Console.WriteLine(rspMsg);
    
            stream.Close();
          }
    
    

  • Спасибо, неприменно опробую.
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]