110,533
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
//自己写namespace
/// <summary>
/// 通过Action中的Request获取全部请求到Dictionary<string, object>
/// </summary>
/// <param name="requestInAction">Request对象</param>
/// <returns>全部请求Map Dictionary<string, object></returns>
public static Dictionary<string, object> AllRequests(HttpRequestMessage requestInAction)
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (var item in requestInAction.Headers)
{
if (item.Key.ToLower() == "token")
{
result.Add("token", item.Value.FirstOrDefault().ToString());
}
}
var method = requestInAction.Method;
foreach (var item in requestInAction.GetQueryNameValuePairs())
{
if (!result.ContainsKey(item.Key.ToLower()))
{
result.Add(item.Key.ToLower(), item.Value);
}
}
if (requestInAction.Content.IsFormData())
{
var context = (System.Web.HttpContextBase)requestInAction.Properties["MS_HttpContext"];//获取传统context
var request = context.Request;//定义传统request对象
foreach (var item in request.Form.AllKeys)
{
if (!result.ContainsKey(item.ToLower()))
{
result.Add(item.ToLower(), request.Form[item]);
}
}
}
else
{
try
{
var resultString = requestInAction.Content.ReadAsStringAsync().Result;
Newtonsoft.Json.Linq.JObject @object = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(resultString);
foreach (var item in @object)
{
if (!result.ContainsKey(item.Key.ToLower()))
{
result.Add(item.Key.ToLower(), item.Value);
}
}
}
catch (Exception ex)
{
result.Add("JsonErrorAt", $"{ex.HResult}-{ex.Message}");
//throw;
}
}
return result;
}
用这个方法可以吧全部的请求都读取到一个字典表里面。