C#HTTPS网站登录

时间:2018-07-21 19:12:50

标签: c# post login https

有一段时间,我无法通过HTTPS协议登录网站。我尝试了各种方法,有些方法要么将请求转换为GET,要么我现在有了。

我的代码:

        string credentials = "";
        string formParams = string.Format("username={0}&password={1}&remember=true", username, password);
        string cookieHeader;
        HttpWebRequest req = WebRequest.Create("https://account.mojang.com/login") as HttpWebRequest;
        req.ContentType = "application/x-www-form-urlencoded";
        req.SetRawHeader("Host", "account.mojang.com");
        req.SetRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0");
        req.SetRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        req.SetRawHeader("Accept-Language", "en - US, en; q = 0.5");
        req.SetRawHeader("Accept-Encoding", "gzip, deflate");
        req.SetRawHeader("Referer", "https://account.mojang.com/login");
        req.KeepAlive = false;
        req.SetRawHeader("Upgrade-Insecure-Requests", "1");
        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
        req.ServicePoint.Expect100Continue = false;
        byte[] bytes = Encoding.ASCII.GetBytes(formParams);
        req.ContentLength = bytes.Length;
        req.Method = "POST";
        using (Stream os = req.GetRequestStream())
        {
            os.Write(bytes, 0, bytes.Length);
        }
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        cookieHeader = resp.Headers["Set-cookie"];
        if (resp.Headers["Set-cookie"].Contains("PLAY_SESSION")) { credentials = cookieHeader; }
        return resp.StatusCode.ToString() + Environment.NewLine + resp.Headers.ToString(); ;

当然,结果应该是状态代码和标头(包括cookie),但是我得到以下信息: The output from the function

该cookie不会注册,记住我的cookie也不会注册。我究竟做错了什么?我有一个截止日期即将到来的项目,因此我们将不胜感激。谢谢您的理解。

1 个答案:

答案 0 :(得分:0)

我建议使用HttpClient。另请注意,即使它是一次性的,您通常也应该在整个应用程序中使用相同的HttpClient。看到: https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

        client.BaseAddress = new Uri("http://account.mojang.com");
        var content = new FormUrlEncodedContent(new[]
        {
            new KeyValuePair<string, string>("username", username),
            new KeyValuePair<string, string>("password", password),
            new KeyValuePair<string, string>("remember", "true")
        });
        var result = await client.PostAsync("/login", content);
        string resultContent = await result.Content.ReadAsStringAsync();
        return result.Headers.ToString();
相关问题