如何从Windows应用程序将用户名和密码发布到网页上以获得特定于用户的内容?

时间:2019-01-11 23:35:44

标签: c# .net

我想使用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代码而不是用户特定页面时发布相同数据。

我做错了。但是我不知道。

1 个答案:

答案 0 :(得分:0)

几年前,我使用Outlook Web Access(OWA)做过类似的事情。我创建了一个托管Web浏览器控件的应用程序。我导航到登录页面。在代码中。然后,使用DOM模型在调用“登录”按钮之前设置用户名和密码。下一页将是OWA,在您的情况下将是您想要的数据页。然后使用DOM抓取您的数据。