Ошибка индекса вне диапазона? Автоматический вход в систему Roblox с использованием файлов cookie - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в stackoverflow, Как дела?

В любом случае, я получаю ошибку об индексе вне диапазона, для программы автоматического входа в систему для roblox с использованием моих файлов cookie, Статистика ошибок:

Ошибка в строке: 183:

int End = resp.Headers[item].IndexOf("\n domain=", Start);

полное сообщение об ошибке:

The index is out of range. It can not be negative and must be smaller than the size of the collection.
Parameter name: startIndex'

мой код:

private string RBLXAutoLogin(string user, string pass)
{
    try
    {
        string json = $"{{\"password\":\"{ pass }\", \"username\":\"{ user }\"}}";
        HttpWebRequest loginReq = (HttpWebRequest)WebRequest.Create("https://www.roblox.com/newlogin");
        loginReq.Method = "POST";
        loginReq.ContentType = "application/json; charset=utf-8";
        loginReq.ContentLength = Encoding.UTF8.GetBytes(json).Length;

        using (var sr = new StreamWriter(loginReq.GetRequestStream()))
        {
            sr.Write(json);
            sr.Flush();
            sr.Close();
        }

        using (HttpWebResponse resp = (HttpWebResponse)loginReq.GetResponse())
        {
            foreach (string item in resp.Headers.Keys)
            {
                if (item == "Set-Cookie")
                {
                    int Start = resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0);   
                    Console.WriteLine(resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0));
                    int End = resp.Headers[item].IndexOf("\n domain=", Start);
                    Console.WriteLine(resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", ""));
                    return resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", "");
                }
            }
            return null;
        }
    }
    catch(WebException wex)
    {
        return wex.ToString();
    }
}

1 Ответ

0 голосов
/ 06 ноября 2018

Вы хотите это?

if (item == "Set-Cookie")
{
    int Start = resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0);   
    if (Start >= 0)
    {
        Console.WriteLine(resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0));
        int End = resp.Headers[item].IndexOf("\n domain=", Start);
        Console.WriteLine(resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", ""));
        return resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", "");
    }
}
...