c# MVC Action 如何知道 發送方給你的 Json 數據的格式內容是什么


 
         
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格式 當你不知道對方會發送什么格式的數據給你【雖然很扯但是但是你懂的。】

此時無論對方給不給數據文檔,我們都知道他發送的啥子格式的數據了

本文想說明的問題大家看懂了嗎,喜歡的話點個贊唄!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM