【发布时间】:2020-08-13 15:58:36
【问题描述】:
深入研究使用 flurl 向客户端服务器发送多部分 POST 调用。不幸的是,他们的服务器对我们来说是一个黑匣子。我收到了 400 条回复,带有一条通用消息,所以在我对它们进行错误处理之前,我需要覆盖我的所有基础。
执行这样的调用:
string s = await "https://clientservier.com/cgi-bin/perl-script"
.PostMultipartAsync(mp => mp
.AddString("DisplayActive", "IsDisplayed")
.AddString("ControlTypeHidden", "ALL")
.AddString("QueryHidden", "KEYs")
.AddString("dump_app_trace", "false")
.AddString("db_debug", "false")
.AddString("Get Data", "Get Data"))
.ReceiveString();
如果我在 BeforeCall 事件上附加一个处理程序,并查看 HttpCall 对象,我的变量会按预期列在 Request.Content.Parts 中。但是,RequestBody 为空 - 我想查看发送的请求的字符串输出,类似于:
-----------------------------13377838992432022416720759
Content-Disposition: form-data; name="DisplayActive"
IsDisplayed
-----------------------------13377838992432022416720759
Content-Disposition: form-data; name="ControlTypeHidden"
ALL
-----------------------------13377838992432022416720759
Content-Disposition: form-data; name="QueryHidden"
KEYs
-----------------------------13377838992432022416720759
Content-Disposition: form-data; name="Get Data"
Get Data
-----------------------------13377838992432022416720759
Content-Disposition: form-data; name="dump_app_trace"
false
-----------------------------13377838992432022416720759
Content-Disposition: form-data; name="db_debug"
false
-----------------------------13377838992432022416720759--
(显然,是的,边界会有所不同,这只是一个浏览器示例。) 有趣的是,当调用返回 400 时,AfterCall 事件处理程序在对象中没有上述部分,所以我想知道在进行此调用之前是否忘记做某事。
【问题讨论】:
-
会问为什么投反对票,以帮助改善我的问题,但我很确定这只是一个巨魔。