通过Fiddler发送POST请求到asp.net mvc动作

本文关键字:asp net mvc 动作 请求 Fiddler 发送 POST 通过 | 更新日期: 2023-09-27 18:19:08

我有一个ASP.NET MVC网站。我的一条路线是URL,它有5个参数。为便于说明,这些参数分别命名为parameter1parameter2parameter3parameter4parameter5。目前,我正在构建一个URL在一些C#代码,将POST到mvc动作通过WebClient。代码看起来像这样:

WebClient myWebClient = new WebClient();
myWebClient.UploadStringCompleted += myWebClient_UploadStringCompleted;
string url = "http://www.example.com/customer/" + parameter1 + "/orders/" + parameter2 + "/" + parameter3 + "/" + parameter4 + "/" + parameter5;
myWebClient.UploadStringAsync(new Uri(url, UriKind.Absolute));

我相信UploadString方法做了一个POST。我需要做一个POST,因为我的参数值可以很长。事实上,我估计有时候,总url长度可能有20000个字符长。无论如何,当我试图发布我的数据时,我得到一个400 error。为了调试这个,我试图找出如何在Fiddler中模拟POST

假设我通过上面所示的查询字符串传递值,我在Fiddler中输入什么值?从Composer选项卡,我不确定该为Request Headers区域输入什么。我也不完全确定该为url输入什么。我不确定是否我把整个URL在那里,包括参数值,或者如果那些属于Request Headers .

我需要进入Fiddler,以便我可以调试我的问题?

通过Fiddler发送POST请求到asp.net mvc动作

基本上所有参数都是URL的一部分,这是问题的根源。下面是发生的事情:您达到了URL长度限制,并收到"400个错误请求"错误。在现实世界中,大多数web浏览器不能处理超过2000个字符的url。

为了解决这个问题,我建议做一点重构,这样请求被发送到URL http://www.example.com/customer/parameter1/orders甚至http://www.example.com/customer/orders,在请求体中发送参数。下面是如何在Fiddler中测试这样的请求:

    Composer选项卡上选择POST请求谓词
  1. 指定URL为

    http://www.example.com/customer/parameter1/orders

    http://www.example.com/customer/orders

  2. Request Headers节中,你可以设置内容类型头如

    Content-Type: application/x-www-form-urlencoded
    

    或您可能需要的任何其他标头。

  3. 最后在Request Body字段中以查询字符串形式列出您的参数

    parameter1name=parameter1value&parameter2name=parameter2value
    

在这个新情况下,您可以使用WebClient发送这样的请求:

WebClient myWebClient = new WebClient();
myWebClient.UploadStringCompleted += myWebClient_UploadStringCompleted;
string url = "http://www.example.com/customer/orders";
string data = "parameter1name=parameter1value&parameter2name=parameter2value";
myWebClient.UploadStringAsync(new Uri(url, UriKind.Absolute), data);

我只是模仿发送的请求。

我是这样做的:

  1. 打开提琴手
  2. 转到我想重新发出命令的页面,即重复错误步骤,但注意列表中的请求
  3. 从列表中选择它并右键单击,转到重播>重新发行并编辑
  4. 这构建了一个复制的请求,但在发送之前遇到了断点(您将看到右侧的红色条)
  5. 在此之上,您可以编辑发送的值,双击其中的任何一个头,QueryString等
  6. 然后点击运行完成