通过Fiddler发送POST请求到asp.net mvc动作
我有一个ASP.NET MVC
网站。 我的一个路由是一个带有5个参数的URL
。 为了便于说明,这些参数被命名为parameter1
, parameter2
, parameter3
, parameter4
和parameter5
。 目前,我正在一些C#
代码中构建一个URL,它将通过WebClient
POST
到mvc动作。 该代码如下所示:
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。
要解决此问题,我建议您进行一些重构,以便将请求发布到urlhttp://www.example.com/customer/parameter1/orders
甚至http://www.example.com/customer/orders
带有参数的http://www.example.com/customer/orders
在请求正文中发送。 以下是在Fiddler中测试此类请求的方法:
- 在
Composer
选项卡上,选择POST
请求动词 -
将URL指定为
http://www.example.com/customer/parameter1/orders
要么
-
在“
Request Headers
部分中,您可以设置内容类型标题Content-Type: application/x-www-form-urlencoded
或您可能需要的任何其他标题。 或者只是留空,这将适用于您的情况。
-
最后在
Request Body
字段中以查询字符串forms列出您的参数parameter1name=parameter1value¶meter2name=parameter2value
在这个新案例中,您可以使用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);
我只是模仿发送的确切请求。
我是这样做的:
- 打开提琴手
- 转到我想重新发出命令的页面,即重复错误步骤,但在列表中查看请求
- 从列表中选择它并右键单击,转到重播>重新发布和编辑
- 这会构建一个复制的请求,但在发送之前会遇到一个断点(您将看到右侧的红色条)
- 在此之上,您可以通过双击Headers,QueryString等中的任何值来编辑发送的值
- 然后点击Run to Complete