通过Fiddler发送POST请求到asp.net mvc动作
本文关键字:asp net mvc 动作 请求 Fiddler 发送 POST 通过 | 更新日期: 2023-09-27 18:19:08
我有一个ASP.NET MVC
网站。我的一条路线是URL
,它有5个参数。为便于说明,这些参数分别命名为parameter1
、parameter2
、parameter3
、parameter4
和parameter5
。目前,我正在构建一个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
,以便我可以调试我的问题?
基本上所有参数都是URL的一部分,这是问题的根源。下面是发生的事情:您达到了URL长度限制,并收到"400个错误请求"错误。在现实世界中,大多数web浏览器不能处理超过2000个字符的url。
为了解决这个问题,我建议做一点重构,这样请求被发送到URL http://www.example.com/customer/parameter1/orders
甚至http://www.example.com/customer/orders
,在请求体中发送参数。下面是如何在Fiddler中测试这样的请求:
- 在
指定URL为
http://www.example.com/customer/parameter1/orders或
http://www.example.com/customer/orders在
Request Headers
节中,你可以设置内容类型头如Content-Type: application/x-www-form-urlencoded
或您可能需要的任何其他标头。
最后在
Request Body
字段中以查询字符串形式列出您的参数parameter1name=parameter1value¶meter2name=parameter2value
Composer
选项卡上选择POST
请求谓词在这个新情况下,您可以使用WebClient
发送这样的请求:
WebClient myWebClient = new WebClient();
myWebClient.UploadStringCompleted += myWebClient_UploadStringCompleted;
string url = "http://www.example.com/customer/orders";
string data = "parameter1name=parameter1value¶meter2name=parameter2value";
myWebClient.UploadStringAsync(new Uri(url, UriKind.Absolute), data);
我只是模仿发送的请求。
我是这样做的:
- 打开提琴手
- 转到我想重新发出命令的页面,即重复错误步骤,但注意列表中的请求
- 从列表中选择它并右键单击,转到重播>重新发行并编辑
- 这构建了一个复制的请求,但在发送之前遇到了断点(您将看到右侧的红色条)
- 在此之上,您可以编辑发送的值,双击其中的任何一个头,QueryString等
- 然后点击运行完成