none
Добавить cookie в WebBrowser? RRS feed

  • Вопрос

  • Здравствуйте!

    Я с помощью запросов HttpWebRequest получил cookies с ресурса на котором настроена NTLM авторизация. Теперь чтобы открыть этот ресурс в компоненте WebBrowser мне необходимо положить в него полученные cookies. Подскажите как это сделать?

    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:30 MSDN Forums Consolidation (От:Visual C#)
    26 апреля 2010 г. 6:00

Ответы

  • Либо находимся в одном домене, либо вбиваем руками.

    • Помечено в качестве ответа Sp3ct0r 29 апреля 2010 г. 11:04
    26 апреля 2010 г. 15:27
  • Попробуйте

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
    
        private void Form1_Load(object sender, EventArgs e)
        {
          String url = "";
          InternetSetCookie(url, "myCoockie", "CoockieData"); 
          webBrowser1.Navigate(url);
        }

    • Предложено в качестве ответа Megano 28 апреля 2010 г. 6:35
    • Помечено в качестве ответа I.Vorontsov 29 апреля 2010 г. 10:49
    26 апреля 2010 г. 11:09

Все ответы

  • Попробуйте

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
    
        private void Form1_Load(object sender, EventArgs e)
        {
          String url = "";
          InternetSetCookie(url, "myCoockie", "CoockieData"); 
          webBrowser1.Navigate(url);
        }

    • Предложено в качестве ответа Megano 28 апреля 2010 г. 6:35
    • Помечено в качестве ответа I.Vorontsov 29 апреля 2010 г. 10:49
    26 апреля 2010 г. 11:09
  • не помогло. все равно запрашивает авторизацию. Код программы следующий

    private void Form1_Load(object sender, EventArgs e)
      {
    
       HttpWebResponse webResponse = null;
       StreamReader reader = null;
       CredentialCache credentialCache = new CredentialCache();
       Uri uri = new Uri(url);
       HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
       webRequest.CookieContainer = new CookieContainer();
       credentialCache.Add(uri, "NTLM", new NetworkCredential(login, password, domain));
       webRequest.Credentials = credentialCache;
       webRequest.AllowAutoRedirect = false;
    
       try
       {
        webResponse = (HttpWebResponse)webRequest.GetResponse();
        
        foreach (Cookie cook in webResponse.Cookies)
        {
         Console.WriteLine(InternetSetCookie(url, cook.Name, cook.Value));
    
        }
    
    
        webBrowser1.Navigate(url);
    
       }
    
    }
    [DllImport("wininet.dll"
    
    
    , CharSet = CharSet.Auto, SetLastError = true
    
    
    )]
    public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
    • Изменено Sp3ct0r 26 апреля 2010 г. 14:19
    26 апреля 2010 г. 12:30
  • Не приспособлен WebBrowser для программной NTLM авторизации , но получить какой то конкретный документ можно

     

     private void Form1_Load(object sender, EventArgs e)
     {
      string user = "user";
      string password = "pasword";
      string url = @"http://";
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
      request.Method = "GET";
      request.KeepAlive = true;
      request.Accept = @"*/*";
    
      if (string.IsNullOrEmpty(user) == false && string.IsNullOrEmpty(password) == false)
      {
      NetworkCredential credential = new NetworkCredential(user, password);
      CredentialCache credentialCache = new CredentialCache();
      credentialCache.Add(new Uri(url), "NTLM", credential);
      request.Credentials = credentialCache;
      }
      webBrowser1.DocumentStream = request.GetResponse().GetResponseStream();;
     }

     

    26 апреля 2010 г. 14:10
  • Что вы подразумеваете под "Не приспособлен WebBrowser для программной NTLM авторизации "?

    Если например в WebBrowser попытаться открыть ресурс с ntlm то появится окошко авторизации. Введя в нем данные мы можем спокойно гулять по этому ресурсу.

    Я понимаю что можно получить документ, собственно я его получаю у себя но кидать его в WebBrowser бесполезно потому как это не авторизованный html.

    Собственно задача в том чтобы пользователю не приходилось вводить данные в окно авторизации в WebBrowser а это делала программа а ему выдавался "залогиненный" ресурс.

    26 апреля 2010 г. 14:37
  • Либо находимся в одном домене, либо вбиваем руками.

    • Помечено в качестве ответа Sp3ct0r 29 апреля 2010 г. 11:04
    26 апреля 2010 г. 15:27
  • Понятно, Спасибо!

    А такой вопрос? А можно как нибудь получить форму окна авторицации при попытке зайти на ресурс, и ввести туда данные программно?

     

    26 апреля 2010 г. 16:27
  • Sp3ct0r , не забывайте помечать ответы. Спасибо.
    Для связи [Mail]
    27 апреля 2010 г. 8:58