如何在C#中模拟浏览器HTTP POST请求并捕获结果

假设我们有一个带有搜索输入表单的网页,它通过HTTP GET向服务器提交数据。 这意味着服务器通过查询字符串接收搜索数据。 用户可以看到URL,也可以自己初始化此请求(通过URL +查询字符串)。

我们都知道。 这是个问题。

如果此网页通过HTTP POST向服务器提交数据怎么办? 用户如何自己初始化此请求?

我知道如何捕获HTTP POST(这就是网络嗅探器的用途),但我如何在C#代码中自己模拟这个HTTP POST请求呢?

您可以查看WebClient类。 它允许您将数据发布到任意URL:

using (var client = new WebClient()) { var dataToPost = Encoding.Default.GetBytes("param1=value1&param2=value2"); var result = client.UploadData("http://example.com", "POST", dataToPost); // do something with the result } 

将生成以下请求:

 POST / HTTP/1.1 Host: example.com Content-Length: 27 Expect: 100-continue Connection: Keep-Alive param1=value1&param2=value2