C#将数据发布到表单中

时间:2017-08-10 10:08:27

标签: c# post webautomation

我以前使用过Selenium来自动化Web进程。然而,它并不总是可靠地工作,更重要的是,它取决于屏幕尺寸,它不一定总是相同的。

现在我有一个这样的表格(非常简化):

<form type="POST" name="demoform">
  First name:<br>
  <input type="text" name="firstname"><br>
  Last name:<br>
  <input type="text" name="lastname">
</form>

以前,我会搜索输入名称并输入数据。但现在我想用不同的方式做到这一点。我想知道如何通过POST发送数据以及如何获取网页的整个HTML结果。此外,我想知道后者只是一个HTML响应,还是它是实际用户会看到的页面HTML。

2 个答案:

答案 0 :(得分:2)

  

我以前使用过Selenium来自动化Web进程。   但是,它并不总是可靠,更重要的是,它是可靠的   取决于屏幕尺寸

你还没有真正支持你关于可靠性的陈述,但我不同意。我最近参与了一个使用Selenium Chrome Driver的项目,并没有遇到任何可靠性问题,也没有看到任何依赖屏幕分辨率的东西?你一定做错了。无论如何,既然你想在这里使用不同的技术,可以快速了解你将如何实现它:

  

此外,我想知道后者是否只是一个HTML响应,或者它是否是   实际用户会看到的页面的HTML

由于您刚刚开始,您应该为自己配备一个像Fiddler这样的网络调试工具。它允许您拦截和操纵Web请求和响应。网上有很多关于如何使用Fiddler的免费教程,所以请找一个并快速掌握它 - 它不应该花费很长时间,而且Fiddler是一种你不能去的工具在Web开发或抓取过程中没有长期运行。

下一步是熟悉HttpClient(早期版本的.NET 4.5+或WebClient)。它允许您使用完全可自定义的对象与网站进行通信。您几乎可以调整请求或响应的任何方面:标题,cookie,协议等(因此它们都与Fiddler一致)。这个课程已经包含了很多逻辑,因此您可以专注于对您来说最重要的是通信

  

我想知道如何通过POST发送数据以及如何获取整个HTML   网页的结果。

以下是如何使用HttpClient下载html字符串:

public Task<string> GetHtmlAsync(string url)
{
    try
    {
        var t = Task.Run(async () => {
            using (var client = new HttpClient())
            {
                var response = await client.GetAsync(url);
                return await response.Content.ReadAsStringAsync();
            }
        });
        return t;
    }
    catch (HttpRequestException e)
    {
        return Task.FromException<string>(e);
    }
}

它与POST非常相似,但已在StackOverflow上回答:How to make HTTP POST web request

答案 1 :(得分:0)

试试这个......

  <form method="post" action="pagename" name="demoform">

      First name:<br>

      <input type="text" name="firstname"><br>

      Last name:<br>

      <input type="text" name="lastname">

      <input type="submit" value="Submit" />
    </form>