看到本段代碼是不是很熟悉,常用了是吧,現在換一種場景,A與B協作,B向A發送回調,A知道B回想自己發送回調數據,且發送的是Json格式數據,但格式內容B沒有給文檔, 此時測試確實可以收到B發送的回調請求,但是就是不知道數據格式很著急,這時B暫時聯繫不上,且B的項目已經上線運行良好不會出問題,此時怎麼 ...
public class DemoModel { public string Name { get; set; } public int Age { get; set; } }
[HttpPost] public ActionResult About(DemoModel model) { return Json(model); } [HttpPost] public ActionResult About(string Name, int Age) { return Json(model); }
看到本段代碼是不是很熟悉,常用了是吧,現在換一種場景,A與B協作,B向A發送回調,A知道B回想自己發送回調數據,且發送的是Json格式數據,但格式內容B沒有給文檔,
此時測試確實可以收到B發送的回調請求,但是就是不知道數據格式很著急,這時B暫時聯繫不上,且B的項目已經上線運行良好不會出問題,此時怎麼也得想辦法知道B回調介面
到底發送了啥子呢?
有開發經驗的小伙伴說好說這還不容易嗎?
看招
//Post參數來了 StringBuilder sb = new StringBuilder(); string[] keys = Request.Form.AllKeys; for (int i = 0; i < keys.Length; i++) { sb.Append(keys[i] + ": " + Request.Form[keys[i]] + "<br>"); }
//Get參數來了 StringBuilder sb = new StringBuilder(); foreach (String key in Request.QueryString.AllKeys) { sb.Append("Key: " + key + " Value: " + Request.QueryString[key]); }
哎呦哦我去,咋全部都是空呢,不對啊根據開發經驗 Post,Get兩種方式總得是一種吧
但是就是沒有是不是很著急呢
其實包括我在呢的許多開發小伙伴在使用MVC開發時因為太好用了好多東西微軟都為大家準備好了,因為太方便了所以導致我們有些情況就想當然了
下麵說出微軟內部是雜實現的吧
public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); DemoModel model = filterContext.ActionParameters["model"] as DemoModel; } public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); filterContext.HttpContext.Request.InputStream.Position = 0; using (var reader = new StreamReader(filterContext.HttpContext.Request.InputStream)) { string json = reader.ReadToEnd(); //Json字元串得到了知道其他小伙伴發送過來的Json數據格式了 } }
本文想說明的問題大家看懂了嗎,喜歡的話點個贊唄!
Ps:補充下
小伙伴註意①②是不一樣的嘍
本文想表達的是
後臺Http請求時 發送給你的是json格式 當你不知道對方會發送什麼格式的數據給你【雖然很扯但是但是你懂的。】
此時無論對方給不給數據文檔,我們都知道他發送的啥子格式的數據了
本文想說明的問題大家看懂了嗎,喜歡的話點個贊唄!