コード例 #1
0
        /// <summary>
        /// 响应数据
        /// </summary>
        /// <param name="name"></param>
        /// <param name="item"></param>
        /// <param name="token"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public TResult Invoke <TResult>(string name, IDictionary <string, object> item, Token token, HttpMethod method)
        {
            if (item == null)
            {
                throw new ArgumentException("item不能为null!");
            }

            RESTfulParameter parameter = new RESTfulParameter(name, method, format);

            parameter.Token = token;

            if (method != HttpMethod.POST)
            {
                //添加参数
                parameter.AddParameter(item.Keys.ToArray(), item.Values.ToArray());
            }
            else
            {
                parameter.DataObject = item;
            }

            RESTfulRequest request = new RESTfulRequest(parameter);

            if (!string.IsNullOrEmpty(url))
            {
                request.Url = url;
            }

            return(request.GetResponse <TResult>());
        }
コード例 #2
0
        /// <summary>
        /// 响应数据
        /// </summary>
        /// <param name="name"></param>
        /// <param name="token"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public TResult Invoke <TResult>(string name, Token token, HttpMethod method)
        {
            RESTfulParameter parameter = new RESTfulParameter(name, method, format);

            parameter.Token = token;

            RESTfulRequest request = new RESTfulRequest(parameter);

            if (!string.IsNullOrEmpty(url))
            {
                request.Url = url;
            }

            return(request.GetResponse <TResult>());
        }
コード例 #3
0
        /// <summary>
        /// 响应数据
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="name"></param>
        /// <param name="item"></param>
        /// <param name="token"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public TResult Invoke <TResult>(string name, object item, Token token, HttpMethod method)
        {
            if (item == null || !item.GetType().IsClass)
            {
                throw new ArgumentException("item不能为null,且必须为类对象,可以是匿名类对象!");
            }

            RESTfulParameter parameter = new RESTfulParameter(name, method, format);

            parameter.Token = token;

            if (method != HttpMethod.POST)
            {
                //添加参数
                parameter.AddParameter(item);
            }
            else
            {
                var collection = new Dictionary <string, object>();

                //添加参数
                var plist = CoreHelper.GetPropertiesFromType(item.GetType());
                for (int index = 0; index < plist.Length; index++)
                {
                    collection[plist[index].Name] = CoreHelper.GetPropertyValue(item, plist[index]);
                }

                parameter.DataObject = collection;
            }

            RESTfulRequest request = new RESTfulRequest(parameter);

            if (!string.IsNullOrEmpty(url))
            {
                request.Url = url;
            }

            return(request.GetResponse <TResult>());
        }
コード例 #4
0
        /// <summary>
        /// 调用方法
        /// </summary>
        /// <param name="proxy"></param>
        /// <param name="method"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public object Invoke(object proxy, MethodInfo method, object[] parameters)
        {
            var attr = CoreHelper.GetMemberAttribute <PublishMethodAttribute>(method);

            if (attr == null)
            {
                return(null);
            }

            var httpMethod = HttpMethod.GET;

            if (!CoreHelper.CheckPrimitiveType(method.GetParameters().Select(p => p.ParameterType).ToArray()))
            {
                httpMethod = HttpMethod.POST;
            }

            string           name      = attribute.Name + "." + attr.Name;
            RESTfulParameter parameter = new RESTfulParameter(name, httpMethod, format);

            parameter.Token = token;

            if (httpMethod == HttpMethod.POST)
            {
                var collection = new Dictionary <string, object>();

                //添加参数
                var plist = method.GetParameters();
                for (int index = 0; index < parameters.Length; index++)
                {
                    collection[plist[index].Name] = parameters[index];
                }

                parameter.DataObject = collection;
            }
            else
            {
                //添加参数
                var plist = method.GetParameters();
                for (int index = 0; index < parameters.Length; index++)
                {
                    parameter.AddParameter(plist[index].Name, parameters[index]);
                }
            }


            //处理Cookies
            if (HttpContext.Current != null)
            {
                for (int index = 0; index < HttpContext.Current.Request.Cookies.Count; index++)
                {
                    var cookie = HttpContext.Current.Request.Cookies[index];
                    parameter.AddCookie(new Cookie
                    {
                        Name  = cookie.Name,
                        Value = cookie.Value.Replace(",", "%2C")
                    });
                }
            }

            RESTfulRequest request = new RESTfulRequest(parameter);

            if (!string.IsNullOrEmpty(url))
            {
                request.Url = url;
            }
            request.Timeout = timeout;

            return(request.GetResponse(method.ReturnType));
        }
コード例 #5
0
 /// <summary>
 /// 实例化RESTfulRequest
 /// </summary>
 /// <param name="url"></param>
 /// <param name="parameter"></param>
 /// <param name="timeout"></param>
 public RESTfulRequest(string url, RESTfulParameter parameter, int timeout)
 {
     this.url       = url;
     this.parameter = parameter;
     this.timeout   = timeout;
 }
コード例 #6
0
 /// <summary>
 /// 实例化RESTfulRequest
 /// </summary>
 /// <param name="url"></param>
 /// <param name="parameter"></param>
 public RESTfulRequest(string url, RESTfulParameter parameter)
 {
     this.url       = url;
     this.parameter = parameter;
 }
コード例 #7
0
 /// <summary>
 /// 实例化RESTfulRequest
 /// </summary>
 /// <param name="parameter"></param>
 /// <param name="timeout"></param>
 public RESTfulRequest(RESTfulParameter parameter, int timeout)
 {
     this.parameter = parameter;
     this.timeout   = timeout;
 }
コード例 #8
0
 /// <summary>
 /// 实例化RESTfulRequest
 /// </summary>
 /// <param name="parameter"></param>
 public RESTfulRequest(RESTfulParameter parameter)
 {
     this.parameter = parameter;
 }