1. 程式人生 > >解析Action返回的Json數據

解析Action返回的Json數據

ret except void handler object val -1 allow data

技術分享

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

解析Action返回的Json數據