private byte[] ParseParameter(IMethodCallMessage msg, RequestMappingAttribute rm) { switch (rm.Consumes) { case MediaType.Json: return(System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(msg.Args[0]))); case MediaType.FormUrlEncoded: var lstPmeta = msg.MethodBase.GetParameters().Select(x => Tuple.Create(x.Name, x.ParameterType.Assembly.FullName.ToLower())).ToList(); var lstPstr = msg.Args.Zip(lstPmeta, (pvalue, pmeta) => this.FlatParameter(pvalue, pmeta)) .SelectMany(x => x.Select(a => $"{a.Key}={a.Value}")) .ToList(); return(System.Text.Encoding.UTF8.GetBytes(string.Join("&", lstPstr))); case MediaType.Xml: return(this.ParseToXml(msg.Args[0])); case MediaType.FormData: throw new NotImplementedException(); case MediaType.Text: return(System.Text.Encoding.UTF8.GetBytes(msg.Args[0]?.ToString())); default: throw new ArgumentException("不支持请求参数类型"); } }
private string GetUrl(IMethodCallMessage msg, RequestMappingAttribute rm) { if (rm.Action != null) { return($"{this.baseurl}/{rm.Action}"); } return($"{this.baseurl}/{msg.MethodBase.DeclaringType.Name.ToLower()}/{msg.MethodName.ToLower()}"); }
private object ParseResult(System.Reflection.MethodInfo methodInfo, RequestMappingAttribute rm, string valuestr) { switch (rm.Produces) { case MediaType.Json: return(Newtonsoft.Json.JsonConvert.DeserializeObject(valuestr, methodInfo.ReturnType)); case MediaType.FormUrlEncoded: throw new NotImplementedException(); case MediaType.Xml: return(this.ParseFromXml(methodInfo.ReturnType, valuestr)); case MediaType.FormData: throw new NotImplementedException(); case MediaType.Text: return(valuestr); default: throw new NotImplementedException(); } }