C# 尝试单击按钮登录到网站

C# 尝试单击按钮登录到网站,c#,wordpress,cookies,httpwebrequest,webbrowser-control,C#,Wordpress,Cookies,Httpwebrequest,Webbrowser Control,我几周前才开始和C#玩。我有一个任务,我正试图执行,但不确定我现在的方式是否是正确的方法 我正在尝试登录一个网站(在我的例子中是WordPress网站-为了更好的选择),并使用C在管理面板中导航# 到目前为止,我所做的是创建一个新项目——Windows窗体应用程序 以下代码-使用密码/用户名和其他参数作为POST向网站发送请求 private void button2_Click(object sender, EventArgs e) { CookieContainer cookieJa

我几周前才开始和C#玩。我有一个任务,我正试图执行,但不确定我现在的方式是否是正确的方法

我正在尝试登录一个网站(在我的例子中是WordPress网站-为了更好的选择),并使用C在管理面板中导航#

到目前为止,我所做的是创建一个新项目——Windows窗体应用程序

以下代码-使用密码/用户名和其他参数作为POST向网站发送请求

private void button2_Click(object sender, EventArgs e)
{
    CookieContainer cookieJar = new CookieContainer();
    CookieContainer cookieJar2 = new CookieContainer(); // will use this later
    string testaa = ""; // will use this later
    string paramaters = "log=xxxx&pwd=xxxx&testcookie=1&redirect_to=http://www.example.com/wp-admin/&wp-submit=Log In";
    string strResponse;
    HttpWebRequest requestLogin = (HttpWebRequest)WebRequest.Create("http://www.lyndatobin-howes.com/wp-login.php");
    requestLogin.Method = "POST";
    requestLogin.AllowAutoRedirect = false;
    requestLogin.ContentType = "application/x-www-form-urlencoded";
    requestLogin.CookieContainer = cookieJar;
    requestLogin.ContentLength = paramaters.Length;
    StreamWriter stOut = new StreamWriter(requestLogin.GetRequestStream(), Encoding.ASCII);
    stOut.Write(paramaters);
    stOut.Close();
}
然后,我使用此代码获取响应的cookie

HttpWebResponse response = (HttpWebResponse)requestLogin.GetResponse();
foreach (Cookie c in response.Cookies)
{
    cookieJar2.Add(new Cookie(c.Name, c.Value, c.Path, c.Domain));
}
然后我有这个来读取响应并关闭一些流

StreamReader stIn = new StreamReader(requestLogin.GetResponse().GetResponseStream());
strResponse = stIn.ReadToEnd();
string responseFromServer = stIn.ReadToEnd();
webBrowser1.DocumentText = responseFromServer;
stIn.Close();
response.Close();
然后,我尝试对我尝试访问的页面使用上述cookie,如下所示:

HttpWebRequest requestLogin2 = (HttpWebRequest)WebRequest.Create("http://www.example.com/wp-admin/");
requestLogin2.Method = "POST";
requestLogin2.AllowAutoRedirect = false;
requestLogin2.ContentType = "application/x-www-form-urlencoded";
requestLogin2.CookieContainer = cookieJar2;
requestLogin2.ContentLength = paramaters.Length;
StreamWriter stOut2 = new StreamWriter(requestLogin2.GetRequestStream(), System.Text.Encoding.ASCII);
stOut2.Write(paramaters);
stOut2.Close();

StreamReader stIn2 = new StreamReader(requestLogin2.GetResponse().GetResponseStream());
strResponse = stIn2.ReadToEnd();
string responseFromServer2 = stIn2.ReadToEnd();
webBrowser1.DocumentText = responseFromServer2;
richTextBox2.Text += "\n\n\n" + responseFromServer2;
stIn.Close(); 
因为某种原因它不起作用,我已经试了一个星期了

我尝试在第一个请求之后显示标题,以查看我得到的标题。然后看看我制作的饼干(cookieJar2),它们似乎不一样


无论如何,在这件事上的任何帮助都将是令人敬畏和高度赞赏的。我试图尽可能多地提供详细信息。

我注意到关于您的代码的第一件事是,您在初始登录时调用了两次
GetResponse()

HttpWebResponse response = (HttpWebResponse)requestLogin.GetResponse();

因此,您将发出两次登录请求,并将返回两个不同的cookie。这就是为什么
cookieJar2
中的cookie与您稍后输出的内容不匹配的原因。重新使用
响应
对象:

StreamReader stIn = new StreamReader(response.GetResponseStream());

接下来,当您尝试加载管理页面时,不要向其发布
POST
。您的第二个请求应该是
GET
,以检索页面内容。

无论我做什么,我始终只获取响应cookie,因此我认为我缺少其他4个cookie。。不知道该怎么办,还在找matterNo的事吗?甚至连方向都没有?
StreamReader stIn = new StreamReader(response.GetResponseStream());