解析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);
        }
    }
}
时间: 2024-10-06 00:16:10

解析Action返回的Json数据的相关文章

Jquery JavaScript解析Ajax返回的json数据(转)

最近在用jquery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行. 经过网友指出,这个问题已经有了比较明确的结论,那就是jquery ajax方法的complete方法是不会处理dataType的,所以如果你是在complete里面试图直接用json数据是不可行的,必须先通过eval. $.ajax方法如下: Java代码 $.ajax({ type: “POST”, url: ctxRoot+’FolderAct

ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据

ajaxFileUpload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况. 仔细调试发现其实在向服务器提交数据后,是进入了success回调函数的,只是没有解析到json数据.那就说明服务器做出了响应的,进入了success方法的,唯一的问题就是前台接受的数据不是json格式的. 使用console.log输出data发现并不是纯粹的json数据,其中头部多了<pre style="word-wrap

js解析php返回的json数据无法获取length的问题分析

1.问题出现的过程,js解析php json_encode 的数据,无法获取长度信息,提示undefined debug: 首先打印查看了php encode后的数据,返现最外层是一个中括号,误以为编码成了一个数组,于是将其强制类型转换为Object ,但是长度依然undefined 在同样是解析json的话题ppt页面,控制台打印json,发现有一个length的属性,起初以为是在php端加到数组中的,查看后发现并非如此,于是乎stackoverflow上查询得知,要想有此属性,必须是一个js

python解析url返回的json格式数据

1.python代码# --*-- coding=utf-8 --*--import urllib2import urllibimport json weatherHtml = urllib.urlopen('http://songsearch.kugou.com/song_search_v2?keyword=周杰伦&pagesize=1')#通过urllib模块中的urlopen的方法打开urlweatherHtml1 = weatherHtml.read()#通过read方法获取返回数据pr

python中jsonpath模块,解析多层嵌套的json数据

1. jsonpath介绍用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java. 使用方法如: import jsonpathres=jsonpath.jsonpath(dic_name,'$..key_name')#嵌套n层也能取到所有key_name信息,其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回

jquery序列化form表单使用ajax提交后处理返回的json数据

这篇文章主要介绍了jquery序列化form表单,使用ajax提交后处理返回的json数据的示例,需要的朋友可以参考下 1.返回json字符串: ** 将一个字符串输出到浏览器 */    protected void writeJson(String json) {        PrintWriter pw = null;        try {            servletResponse.setContentType("text/plain;charset=UTF-8"

WebService传递XML数据 C#DataSet操作XML 解析WebService返回的XML数据

Webservice传递的数据只能是序列化的数据,典型的就是xml数据.   /// <summary>         /// 通过用户名和密码 返回下行数据         /// </summary>         /// <param name="UserName">用户名</param>         /// <param name="UserPwd">密码</param>    

在AFN中使用NSXMLParser解析服务器返回的XML数据

服务器返回的XML格式: 因为苹果没有提供直接获取xml开始标签和结束标签中间的字符串,虽然提供了 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string这个方法获取中间的字符串,但是这个字符串包含了空格和回车,所以要在这个方法中进行过滤. 源代码如下: 8 9 #import "RecommendController.h" 11 #import "SPHTTPRequestTool.h&

android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访问的IP都是10.0.2.2,如果在apache虚拟主机配置文件中配置了多个虚拟主机,那么将默认解析为对第一个虚拟主机的请求,所以,在调试android应用时,应该将对应的服务端所配置的那个虚拟主机放在配置文件中的第一个虚拟主机的位置.否则就会出现请求的文件不存在等的错误. 服务端返回JSON数据及