解析Action返回的Json数据


WebRequest和HttpClient的Get、post方式解析:

namespace Fractalist.Benz.Controllers
{
    public class ResolveResultController : Controller
    {
        public void WebRequestPost()
        {
            HttpWebResponse response = null;
            try
            {
                string url = "http://localhost:8022/ResolveResult/PostTest";
                dynamic expando = new System.Dynamic.ExpandoObject();
                expando.name = "gw";
                var jsonInfo = JsonConvert.SerializeObject(expando);
                byte[] byteArray = Encoding.UTF8.GetBytes(jsonInfo);
                //string result = new HttpClient().GetStringAsync(url).Result;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json";
                request.ContentLength = byteArray.Length;
                Stream newStream = request.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length); //写入参数 
                newStream.Close();
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = (HttpWebResponse)ex.Response;
            }
            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string textResponse = sr.ReadToEnd(); // 返回的数据
            JsonResultInfo deinfo = JsonConvert.DeserializeObject<JsonResultInfo>(textResponse);
            var results = deinfo.Result;
            var message = deinfo.message;
        }

        public void HttpClientGet()
        {
            string url = "http://localhost:8022/ResolveResult/GetTest";
            //封装请求参数  
            Task<string> response = new HttpClient().GetStringAsync(url + "?name=gw");
            string result = response.Result;
            JsonResultInfo deinfo = JsonConvert.DeserializeObject<JsonResultInfo>(result);
            var results = deinfo.Result;
            var message = deinfo.message;
        }
        public async Task<ActionResult> HttpClientPost()
        {
            string url = "http://localhost:8022/ResolveResult/PostTest";
            var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
            using (var client = new HttpClient(handler))
            {
                //第一种方式
                var content = new FormUrlEncodedContent(new Dictionary<string, string>()
                {
                    {"name","glw"}
                });
                //第二种方式
                //string jsonData = ReturnJson("name", "glw");
                //var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
                //封装请求参数  
                var response = await client.PostAsync(url, content);
                string result = await response.Content.ReadAsStringAsync();

                JsonResultInfo deinfo = JsonConvert.DeserializeObject<JsonResultInfo>(result);
                var results = deinfo.Result;
                var message = deinfo.message;
                return Content(message);
            }
        }

        [AllowAnonymous]
        [HttpPost]
        public JsonResult PostTest(string name)
        {
            string.Format(@"【class】:ResolveResultController,【method】:Test,【message】:name---{0}"
               , name).LogInfo();
            return Json(new { Result = false, Message = name + "我是好人也是个坏人" });
        }

        [AllowAnonymous]
        public JsonResult GetTest(string name)
        {
            return Json(new { Result = false, Message = name + "我是好人也是个坏人" }, JsonRequestBehavior.AllowGet);
        }

        /// <summary>
        /// 组装请求json
        /// </summary>
        /// <param name="code"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        static string ReturnJson(string code, string value)
        {
            Hashtable hastable = new Hashtable();
            hastable.Add(code, value);
            return Newtonsoft.Json.JsonConvert.SerializeObject(hastable);
        }
    }
}

优质内容筛选与推荐>>
1、Percona-Tookit工具包之pt-table-sync
2、LeetCode: Symmetric Tree
3、(转)打理一下IOS项目中的图片资源
4、maven学习笔记
5、对散列进行sort排序,只是会产生一个顺序,但这顺序和初始化时的顺序不一致


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号