/// <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>()); }
/// <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>()); }
/// <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>()); }
/// <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)); }