我想使用C#和.NET从网页中获取数据。但是页面需要登录。登录页面的HTML代码是这样的(页面将数据发布到自身):
<form id="frm" action="./default.aspx" method="post">
<input id="userName" type="text">
<input id="password" type="password">
<input type="submit" value="Send">
</form>
我想将Windows应用程序中的相关数据发布到此页面。我的C#代码如下:
var baseAddress = new Uri("https://www.website.com");
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string,string>("userName","myUserName"),
new KeyValuePair<string, string>("password","myPassword")
});
var result = await client.PostAsync("/default.aspx",content);
var resultText = await result.Content.ReadAsStringAsync();
Console.WriteLine(resultText);
}
当我手动填写表格并单击“发送”按钮时,出现用户特定页面。但是,当我使用Windows应用程序发布同一登录页面的HTML代码而不是用户特定页面时发布相同数据。
我做错了。但是我不知道。
答案 0 :(得分:0)
几年前,我使用Outlook Web Access(OWA)做过类似的事情。我创建了一个托管Web浏览器控件的应用程序。我导航到登录页面。在代码中。然后,使用DOM模型在调用“登录”按钮之前设置用户名和密码。下一页将是OWA,在您的情况下将是您想要的数据页。然后使用DOM抓取您的数据。