繁体   English   中英

如何使用C#在ASP.NET中以编程方式提交表单

[英]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服务器请求页面时发生的情况。

  1. 首先,客户端使用HTTP请求页面。 通常,这是从浏览器对/MyForm.aspx这样的页面进行的初始GET请求

  2. 然后在服务器上执行c#代码。 这将创建html页面。

  3. 客户端很可能是浏览器获取服务器创建的页面并呈现html,JavaScript,css ...这是在客户端计算机上完成的,如果您正在从浏览器发出请求,则该计算机无法运行c#。

  4. 然后,客户端填写表单中的字段,一旦按下“提交”按钮,浏览器便立即使用POST方法将另一个HTTP请求从客户端发送到服务器。 POST方法不同于GET方法,因为它打算具有HTTP的主体部分。 在该正文部分中,您具有表单数据。 通常,数据的格式为x-www-form-urlencoded字符串。

  5. 然后,服务器运行服务器代码以进行发布。 了解Fiddler的最佳方法是使用Fiddler,这是一个HTTP代理,旨在向您显示http请求。

您的代码现在正在做的事情是创建整个过程的发布请求。 C#代码在这一方面工作正常。 由于服务器没有响应,因此您收到的错误与project-2上正在运行的错误有关。

这可能是由很多原因引起的(错误的代理设置,服务器上的长时间运行的代码,dns问题...)

但是写得最好的服务器将阻止您设计使然。 这是一个安全问题,并且执行起来并不简单。 因此,您可能不会因设计而得到任何回应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM