Делаю авторизацию в CMS Xenforo. Сперва с помощью get-запроса получаю куки, а потом уже отправляю его в POST-запросе. Все бы ничего, да в сниффере я не вижу ни одной куки в post-запросе, хотя я добавил его в CookieContainer.
static CookieContainer Cookie = new CookieContainer();
public static void Get() {
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://xenforo.info/");
request.CookieContainer = new CookieContainer();
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Cookie.Add(response.Cookies);
}
public static void Post() {
Get();
var request = (HttpWebRequest) WebRequest.Create("http://xenforo.info/login/login");
request.CookieContainer = new CookieContainer();
request.CookieContainer = Cookie;
var postData = "login=xxx";
postData += "®ister=0";
postData += "&password=xxx";
postData += "&cookie_check=1";
postData += "&redirect=%2F";
postData += "&_xfToken=";
var data = Encoding.ASCII.GetBytes(postData);
request.Referer = " https://xenforo.info/";
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36";
using(var stream = request.GetRequestStream()) {
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse) request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
Вот так будет работать (и не надо хранить весь контейнер с куками, только сами куки):
private static CookieCollection cook;
public static void Get()
{
...
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
cook = response.Cookies;
}
public static void Post()
{
Get();
var request = (HttpWebRequest) WebRequest.Create("https://xenforo.info/login/login");
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri("https://xenforo.info"), cook);
...
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно, чтобы через определенное время бездействия пользователя возвращало в главное менюСейчас таймер выглядит так:
Приведу незатейливый код, демонстрирующий проблему:
Есть два desktop-приложения: launcher, который позволяет менять параметры второй программы, и cleaner, которой и передаются эти параметрыНеобходимо...