Ejemplo n.º 1
0
        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("不支持请求参数类型");
            }
        }
Ejemplo n.º 2
0
 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()}");
 }
Ejemplo n.º 3
0
        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();
            }
        }