2015-03-02 2 views
0

У меня проблема с созданием бота для простой браузерной игры.RestSharp нет файлов cookie в объекте ответа

Игра находится здесь http://en.gladiatus.gameforge.com/game/.

Проблема в том, что после входа в систему мне нужно получить файл cookie, который будет использоваться для будущих запросов, но RestResponse.Cookies всегда пуст.

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

public bool DoLogin() { 
    var client = new RestClient("http://s2.en.gladiatus.gameforge.com"); //Server 2 on England. 
    var request = new RestRequest("/game/index.php?mod=start&submod=login", Method.POST); 
    request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); 
    request.AddParameter("name", "bot_test"); //test account. 
    request.AddParameter("pass", "bot_test_pass"); 

    var response = client.Execute(request); 

    var match = System.Text.RegularExpressions.Regex.Match( 
     response.Content, 
     "href=\"index\\.php\\?mod=news&submod=serverEvents&sh=([^&]*?)\""); 

    var _Successful = match.Success; 

    MessageBox.Show(response.Cookies.Count.ToString()); //Always 0 

    if(!_Successful) //Could not login. 
     return false; 

    var _SecureHash = match.Groups[0].Value; 

    return _Successful; 
} 

Я пробовал все, что знаю (что не так много), но я не мог найти, что не так с моим кодом.

Спасибо за чтение!

+0

Попробуйте проверить ответ с помощью отладчика веб-трафика (например, Fiddler http://www.telerik.com/fiddler): скорее всего, вы не получите куки-файлы в ответе. – Isantipov

+0

Хм, ты прав. Тем не менее, делать то же самое с браузером я получаю. Посмотрим, почему это сейчас. Спасибо за помощь. – MHC

+0

Вы поняли это? –

ответ

0

Вам нужно создать экземпляр CookieContainer на вашем RestClient перед выполнением каких-либо запросов:

var client = new RestClient("http://s2.en.gladiatus.gameforge.com"); 
client.CookieContainer = new System.Net.CookieContainer(); 

Затем убедитесь, что вы повторно использовать тот же самый RestClient экземпляр в последующих запросах, и те же куки будут передаваться автоматически с каждым запрос.