2015-08-17 3 views
2

Я пытаюсь получить мое консольное приложение C#, чтобы проверить, правильно ли указаны учетные данные. Но когда я пытаюсь это веб-страница дает ошибку:C# Cookies WebRequest не работают

<div id="login_error"> <strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href="https://codex.wordpress.org/Cookies">enable cookies</a> to use WordPress.<br /> 

Это мой код:

 static bool SendRequest(string Username, string Password, string URL) { 

     string formUrl = URL; 
     string formParams = string.Format("log={0}&pwd={1}&wp-submit={2}&redirect_to={3}&testcookie={4}", Username, Password, "Log In", "http://localhost/wp-admin/", "1"); 
     string cookieHeader; 
     WebRequest req = WebRequest.Create(formUrl); 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.Method = "POST"; 
     byte[] bytes = Encoding.ASCII.GetBytes(formParams); 
     req.ContentLength = bytes.Length; 
     ((HttpWebRequest)req).CookieContainer = new CookieContainer(); 
     using (Stream os = req.GetRequestStream()) 
     { 
      os.Write(bytes, 0, bytes.Length); 
     } 
     WebResponse resp = req.GetResponse(); 
     cookieHeader = resp.Headers["Set-cookie"]; 

     string pageSource; 

     using (StreamReader sr = new StreamReader(resp.GetResponseStream())) 
     { 
      pageSource = sr.ReadToEnd(); 
     } 

     Console.Write(pageSource); 

     return true; 
    } 

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

Вся помощь приветствуется!

ответ

4

Вы не устанавливаете CookieContainer на ваш HttpWebRequest, поэтому по умолчанию установлено значение null, что означает, что клиент не принимает файлы cookie.

CookieContainer из MSDN

The CookieContainer property provides an instance of the CookieContainer class that contains the cookies associated with this request.

CookieContainer is null by default. You must assign a CookieContainer object to the property to have cookies returned in the Cookies property of the HttpWebResponse returned by the GetResponse method.

Вы должны установить новый CookieContainer прежде, чем получить ответ от сервера.

req.ContentLength = bytes.Length; 
((HttpWebRequest)req).CookieContainer = new CookieContainer(); 
// Rest of the code here.. 
+0

Я отредактировал мой код и добавил cookiecontainer, но до сих пор получаю ошибку. – JordyAlkema

+0

@BruteFlame, Если вы получаете сообщение об ошибке, это определенно не ошибки Cookies, он работает для меня отлично. Пожалуйста, убедитесь, что ваша новая ошибка. –

 Смежные вопросы

  • Нет связанных вопросов^_^