Пример #1
0
        internal static object Deserialize(JsonSerializer serializer, string input, Type type, int depthLimit)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }
            if (input.Length > serializer.MaxJsonLength)
            {
                throw new ArgumentException(Resources.JSON_MaxJsonLengthExceeded, "input");
            }

            object o = JsonDeserializer.BasicDeserialize(input, depthLimit, serializer);

            return(ObjectConverter.ConvertObjectToType(o, type, serializer));
        }
Пример #2
0
        private IDictionary <string, object> StrongTypeParameters(IDictionary <string, object> rawParams)
        {
            Debug.Assert(ParameterDataDictionary != null);
            IDictionary <string, WebServiceParameterData> paramDataDictionary = ParameterDataDictionary;

            // Allocate a dictionary to hold the processed parameters.
            IDictionary <string, object> result = new Dictionary <string, object>(rawParams.Count);

            // Go through all the raw parameters
            foreach (KeyValuePair <string, object> pair in rawParams)
            {
                string memberName = pair.Key;
                if (paramDataDictionary.ContainsKey(memberName))
                {
                    // Get the type of the formal parameter
                    Type paramType = paramDataDictionary[memberName].ParameterInfo.ParameterType;

                    // Convert the raw parameter based on that type
                    result[memberName] = ObjectConverter.ConvertObjectToType(pair.Value, paramType, Owner.Serializer);
                }
            }
            return(result);
        }
Пример #3
0
 /// <summary>
 /// 类型转换
 /// </summary>
 public object ConvertToType(object obj, Type type)
 {
     return(ObjectConverter.ConvertObjectToType(obj, type, this));
 }
Пример #4
0
        /////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////
        internal static object CreateWebRequestAndGetResponse(string serverUri, ref CookieContainer cookies,
                                                              string username, string connectionString,
                                                              string connectionStringProvider,
                                                              string [] paramNames, object [] paramValues,
                                                              Type returnType)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUri);

            request.UseDefaultCredentials = true;
            request.ContentType           = "application/json; charset=utf-8";
            request.AllowAutoRedirect     = true;
            request.Method = "POST";

            if (cookies == null)
            {
                cookies = ConstructCookieContainer(serverUri, username,
                                                   connectionString, connectionStringProvider);
            }
            if (cookies != null)
            {
                request.CookieContainer = cookies;
            }

            if (paramNames != null && paramNames.Length > 0)
            {
                byte [] postedBody = GetSerializedParameters(paramNames, paramValues);
                request.ContentLength = postedBody.Length;
                using (Stream s = request.GetRequestStream()) {
                    s.Write(postedBody, 0, postedBody.Length);
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            // Get the response
            try {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
                    if (response == null)
                    {
                        throw new WebException(AtlasWeb.ClientService_BadJsonResponse);
                    }

                    GetCookiesFromResponse(response, cookies, serverUri, username, connectionString, connectionStringProvider);
                    if (returnType == null)
                    {
                        return(null);
                    }

                    JavaScriptTypeResolver resolver           = AppSettings.UseLegacyClientServicesJsonHandling ? (JavaScriptTypeResolver) new SimpleTypeResolver() : (JavaScriptTypeResolver) new DictionaryTypeResolver();
                    JavaScriptSerializer   js                 = new JavaScriptSerializer(resolver);
                    string responseJson                       = GetResponseString(response);
                    Dictionary <string, object> wrapperObject = js.DeserializeObject(responseJson) as Dictionary <string, object>;

                    if (wrapperObject == null || !wrapperObject.ContainsKey("d"))
                    {
                        throw new WebException(AtlasWeb.ClientService_BadJsonResponse);
                    }

                    return(ObjectConverter.ConvertObjectToType(wrapperObject["d"], returnType, js));
                }
            } catch (WebException we) {
                HttpWebResponse response = (HttpWebResponse)we.Response;
                if (response == null)
                {
                    throw;
                }
                throw new WebException(String.Format(CultureInfo.CurrentCulture, AtlasWeb.ProxyHelper_BadStatusCode, response.StatusCode.ToString(), GetResponseString(response)), we);
            }
        }