RestSharp响应对象没有cookie

时间:2015-03-02 23:45:28

标签: c# cookies restsharp

我在尝试为简单的浏览器游戏编写机器人时遇到了问题。

可在此处找到游戏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;
}

我尝试了所有我知道的东西(这并不多),但我无法找到我的代码有什么问题。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

在执行任何请求之前,您需要在RestClient上实例化CookieContainer

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

然后确保在后续请求中重复使用相同的RestClient实例,并且每个请求都会自动传递相同的cookie。