0
- 登录,并作出新的(饼干)会议(systempage.local/login.php中)
- 如果登录成功定位到页面,并做一些事情(导航到systempage.local/index.php文件)
我正在尝试编写本地网络中某个站点的应用程序。
login.php通过usral重定向到index.php。 (在浏览器中)
我有我的webrequest准备登录到它。 (它的工作原理,到目前为止)HTTPWebRequest登录。登录后浏览
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string sThepage;
CookieContainer logincookie;
private void button1_Click(object sender, EventArgs e)
{
string strPostData = "user_name=" + txtUser.Text + "&password=" + txtPass.Text + "&language=en&action%3Asubmit=Submit";
CookieContainer tempCookies = new CookieContainer();
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(strPostData);
HttpWebRequest postReq = (HttpWebRequest)WebRequest.Create("system.local/Login.php");
postReq.Method = "POST";
postReq.KeepAlive = true;
postReq.AllowAutoRedirect = false;
postReq.Accept = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
postReq.ContentType = "application/x-www-form-urlencoded";
postReq.Referer = "system.local/interface/Login.php";
postReq.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1";
postReq.ContentLength = data.Length;
Stream postreqStream = postReq.GetRequestStream();
postreqStream.Write(data, 0, data.Length);
postreqStream.Close();
HttpWebResponse postResponse;
postResponse = (HttpWebResponse)postReq.GetResponse();
tempCookies.Add(postResponse.Cookies);
logincookie = tempCookies;
StreamReader postRegReader = new StreamReader(postResponse.GetResponseStream());
sThepage = postRegReader.ReadToEnd();
// Blanksite if login success.
if (!sThepage.Contains("!doctype"))
{
MessageBox.Show("you logged in");
Navigate(); //Navigate to the index.php
}
else
{
MessageBox.Show("Client was unable to connect!");
}
richTextBox1.Text = sThepage;
}
}
}
..
现在我需要一种方法来导航到indexpage(以及futher一些其他网页)
private void Navigate()
{
// What to do here?
// and how to keep my cookie(sesion) for the next page?
}
可变 'WebHeaderCollection myHeader;' ... '//第一请求(登录) myHeader = postResponse.Headers; ...' 我应该在哪里添加标题? (newReg.cookiecontainer或header?) 'HttpWebRequest newReq =(HttpWebRequest)WebRequest.Create(“system.local/interface/index.php”); newReq.Headers = myHeader;' ....对不起,格式化不起作用,希望你能理解它。 :/ – MrMAG 2012-08-01 10:13:20
主要问题是我应该在哪里添加标头/ cookie? 'newReg。??? = myHeader;'...希望现在更容易理解:) – MrMAG 2012-08-01 10:23:20
参见http://stackoverflow.com/questions/4158448/c-sharp-webrequest-using-cookies – PhonicUK 2012-08-01 10:31:24