有php页面,我们称之为http://www.aaaa.org/login.php
,它有两个textboxes
(name =“username”和name =“password”)和一个按钮。
还有我的.aspx
页面,我想从该页面登录.php
页面。登录后,我想检索并解析子页面http://www.aaaa.org/details.php?id=1234
的一些内容。
我尝试了一些代码,但它总是检索login.php
页面的内容,所以我假设我根本无法登录。
你能告诉我确切的代码怎么做吗?
语言是C#。
答案 0 :(得分:0)
为此,您可以使用HTTPClient库。像这样的东西: http://www.codescales.com/
这将使您能够登录并访问客户端应用程序。请注意,您的应用程序将是脆弱的,并受到Web应用程序的影响,并且它会发生变化。因此,如果他们更改字段名称,您的应用也必须更改。但它会对你想要实现的目标起作用。
我还建议将其写为单独的库,而不是直接写在ASPX代码中。
答案 1 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
WebClient req = new WebClient();
CredentialCache myCache = new CredentialCache();
//myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Basic", new NetworkCredential("login", "passw"));
myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Digest", new NetworkCredential("login", "passw"));
req.Credentials = myCache;
string results;
results = System.Text.Encoding.UTF8.GetString(req.DownloadData("http://www.aaaa.org/login.php"));
}
protected void Button1_Click(object sender, EventArgs e)
{
string TheUrl = "http://www.aaaa.org/details.php?id=2923";
string response = GetHtmlPage(TheUrl);
TextBox2.Text = response;
}
----------------更新:-----------------
protected void Page_Load(object sender, EventArgs e)
{
WebClient req = new WebClient();
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Basic", new NetworkCredential("login", "passw"));
NameValueCollection postData = new NameValueCollection();
postData.Add("username", "login");
postData.Add("password", "passw");
req.UploadValues("http://www.aaaa.org/login.php", postData);
req.Credentials = myCache;
string results;
results = System.Text.Encoding.UTF8.GetString(req.DownloadData("http://www.aaaa.org/login.php"));