C# HttpWebRequest登录

C# HttpWebRequest登录,c#,login,C#,Login,我正在尝试登录https网站,当我运行代码时,我没有收到错误,但我也没有登录,所以我想知道是什么问题 我对一个http网站使用了相同的代码和技术,明显地使用了不同的postdata字符串,它让我登录 代码如下: string postData = "JAVASCRIPT_ON=userName=XXXX&password=XXX&loginAction=Logon"; CookieContainer tempCookies = new CookieCont

我正在尝试登录https网站,当我运行代码时,我没有收到错误,但我也没有登录,所以我想知道是什么问题 我对一个http网站使用了相同的代码和技术,明显地使用了不同的postdata字符串,它让我登录 代码如下:

string postData = "JAVASCRIPT_ON=userName=XXXX&password=XXX&loginAction=Logon";
            CookieContainer tempCookies = new CookieContainer();
            UTF8Encoding encoding = new UTF8Encoding();
            Byte[] byteData = encoding.GetBytes(postData);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://direct.gov.mb.ca/ppr/actions/loginDispatcher");
            request.Method = "POST";
            request.KeepAlive = true;
            request.CookieContainer = tempCookies;
            request.ContentType = "application/x-www-form-urlencoded";
            request.Referer = "https://direct.gov.mb.ca/ppr/jsps/login/login.jsp";
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
            request.ContentLength = postData.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(byteData, 0, byteData.Length);
            requestStream.Close();


        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        tempCookies.Add(response.Cookies);
        loginCookies = tempCookies;

您应该将所有请求的CookieContainer属性设置为同一个实例。

您应该传递字节数组的长度,而不是字符串的长度。您好,感谢您的回复,没有任何建议有效,正如我所说,我对不同的http网站使用相同的代码,它毫无问题地登录,所以我不认为这些是问题所在,还有其他的想法。提示是,当我登录时,它会从登录页面重定向到另一个页面,但该页面不适用于成员,我应该见一位议员page@roy:使用Fiddler将您的假请求与来自浏览器的真实登录请求进行比较。唯一的区别是我的程序中的CONNECT direct.gov.mb.ca:443 HTTP/1.1 CONNECT direct.gov.mb.ca:443 HTTP/1.0 with browser浏览器还有客户端:user aAgent:。。。。和Entity:Content Length:0我的程序没有在连接的请求标头中生成这些内容。我如何生成它们?我的SessionID为空,但实际登录名有SessionID