[英]How to programmatically submit a form in ASP.NET using C#
在实习期间,我被要求发布一个将信息提交到服务器的表单,现在我要以编程方式尽可能多地提交该表单以测试该站点,并尝试一次接收大量数据来查看它是否会损坏。 我是新手,我尝试搜索该怎么做,但仍然不了解。 这就是我尝试过的。
namespace project_1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WebRequest req = WebRequest.Create("http://localhost:68644/project-2");
string postData = "item1=11111&item2=22222&Item3=33333";
byte[] send = Encoding.Default.GetBytes(postData);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = send.Length;
Stream sout = req.GetRequestStream();
sout.Write(send, 0, send.Length);
sout.Flush();
sout.Close();
WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string returnvalue = sr.ReadToEnd();
}
}
}
ps:我的想法来自: 您如何以编程方式填写表格并“发布”网页? 但是我一直收到以下错误消息:“请求已中止:操作已超时”
感谢您的预期帮助。
好的,我认为您误解了从asp.net或任何其他http服务器请求页面时发生的情况。
首先,客户端使用HTTP请求页面。 通常,这是从浏览器对/MyForm.aspx这样的页面进行的初始GET请求
然后在服务器上执行c#代码。 这将创建html页面。
客户端很可能是浏览器获取服务器创建的页面并呈现html,JavaScript,css ...这是在客户端计算机上完成的,如果您正在从浏览器发出请求,则该计算机无法运行c#。
然后,客户端填写表单中的字段,一旦按下“提交”按钮,浏览器便立即使用POST方法将另一个HTTP请求从客户端发送到服务器。 POST方法不同于GET方法,因为它打算具有HTTP的主体部分。 在该正文部分中,您具有表单数据。 通常,数据的格式为x-www-form-urlencoded字符串。
然后,服务器运行服务器代码以进行发布。 了解Fiddler的最佳方法是使用Fiddler,这是一个HTTP代理,旨在向您显示http请求。
您的代码现在正在做的事情是创建整个过程的发布请求。 C#代码在这一方面工作正常。 由于服务器没有响应,因此您收到的错误与project-2上正在运行的错误有关。
这可能是由很多原因引起的(错误的代理设置,服务器上的长时间运行的代码,dns问题...)
但是写得最好的服务器将阻止您设计使然。 这是一个安全问题,并且执行起来并不简单。 因此,您可能不会因设计而得到任何回应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.