asp.net 引用webapi接收返回的Json类型数据

我是研究僧i 提交于 2020-02-23 10:51:50

在网上查到了一些例子加上自己的一些修改,改写了这个方法

        private async Task<string> InvokeWebapi(string strurl, string strapi, string strtype, string strJson)
        {
            HttpClient client = new HttpClient();
            //client.DefaultRequestHeaders.Add("","");
            client.BaseAddress = new Uri(strurl);
            client.Timeout = TimeSpan.FromSeconds(510);
            string result = "";
            if (strtype.ToLower() == "post")
            {
                // var content = new FormUrlEncodedContent(dics);
                var content = new StringContent(strJson);
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                content.Headers.ContentLength = (Encoding.UTF8.GetBytes(strJson)).Length;
                HttpResponseMessage response = client.PostAsync(strapi, content).Result;
                if (response.IsSuccessStatusCode)
                {
                    result = await response.Content.ReadAsStringAsync();
                }
            }
            else if (strtype.ToLower() == "get")
            {
                HttpResponseMessage response = client.GetAsync(strapi).Result;
                if (response.IsSuccessStatusCode)
                {
                    result = await response.Content.ReadAsStringAsync();
                }
            }
            //对结果处理
            JObject jo = new JObject();
            jo = (JObject)JsonConvert.DeserializeObject(result);
            var nRet = jo.ToString();//如果要解析里面的某个实体对象:((JObject)jo["data"]).toString();//data是对应的字段名称
            return nRet;
        }

        /// <summary>
        /// 解析JSON字符串生成对象实体
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param>
        /// <returns>对象实体</returns>
        public static T DeserializeJsonToObject<T>(string json) where T : class
        {
            try
            {
                JsonSerializer serializer = new JsonSerializer();
                StringReader sr = new StringReader(json);
                object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
                T t = o as T;
                return t;
            }
            catch (Exception)
            {
                return null;
            }
        }
        

调用如下

      string sJson = JsonConvert.SerializeObject(new { id, name});//api传入是json字符串
      string strResult=  InvokeWebapi("网址", "网站/api/控制器名称", "POST", sJson).Wait();
      api = DeserializeJsonToObject<ApiResult>(strResult);//api是实体类

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!