ASP.NET MVC在控制器中分别用Get和post模式调用天气url返回数据乱码

ASP.NET MVC在控制器分别中用Get和POST模式调用天气url返回数据乱码

!!!已解决,分享分享!!!

感谢大神:Daniel Cai

感谢大神:顾晓北

post方法,本人不知道,如果有大神知道,请指导!!

//用UTF-8转码有汉字参数的url
        protected string UrlUtf_8(string url)
        {
            byte[] bs = Encoding.GetEncoding("UTF-8").GetBytes(url);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < bs.Length; i++)
            {
                if (bs[i] < 128)
                    sb.Append((char)bs[i]);
                else
                {
                    sb.Append("%" + bs[i++].ToString("x").PadLeft(2, ‘0‘));
                    sb.Append("%" + bs[i].ToString("x").PadLeft(2, ‘0‘));
                }
            }
            return sb.ToString();
        }
        //用UrlGB2312转码有汉字参数的url
        protected string UrlGB2312(string url)
        {
            byte[] bs = Encoding.GetEncoding("GB2312").GetBytes(url);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < bs.Length; i++)
            {
                if (bs[i] < 128)
                    sb.Append((char)bs[i]);
                else
                {
                    sb.Append("%" + bs[i++].ToString("x").PadLeft(2, ‘0‘));
                    sb.Append("%" + bs[i].ToString("x").PadLeft(2, ‘0‘));
                }
            }
            return sb.ToString();
        }
//get方法  这里url的模拟地址为http://wthrcdn.etouch.cn/weather_mini?city=北京
        public string GetFunction(string url)
        {
            string serviceAddress = url;
            //HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.ContentType = "text/html;charset=UTF-8";
            request.Method = "GET";
            //通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
            Stream myResponseStream = response.GetResponseStream();
            //站点在响应的时候用gzip压缩过了,用using (var gStream = new GZipStream(myResponseStream, CompressionMode.Decompress)){}解压
            using (var gStream = new GZipStream(myResponseStream, CompressionMode.Decompress))
            {
                //Encoding.GetEncoding("UTF-8")转码
                StreamReader myStreamReader = new StreamReader(gStream, Encoding.GetEncoding("UTF-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                response.Close();
                myResponseStream.Close();
                return retString;
            }
        }

时间: 2024-12-24 19:18:52

ASP.NET MVC在控制器中分别用Get和post模式调用天气url返回数据乱码的相关文章

ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法

方法一:通过Request.Form [HttpPost]        public ActionResult Test()        {            string id=Request.Form["id"]; return View();        } 方法二:通过映射到FormCollection [HttpPost]        public ActionResult Test(FormCollection form)        {           

ASP.NET MVC 5 - 控制器

原文:ASP.NET MVC 5 - 控制器 MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据类. · Views: 应用程序动态生成 HTML所使用的模板文件. · Controllers: 处理浏览器的请求,取得数据模型,然后指定要响应浏览器请求的视图模板. 本系列教程,我们将覆盖所有这些概念,并告诉您如何在ASP.NET MVC 5中使用它

[转]ASP.NET MVC 5 - 控制器

MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据类. · Views: 应用程序动态生成 HTML所使用的模板文件. · Controllers: 处理浏览器的请求,取得数据模型,然后指定要响应浏览器请求的视图模板. 本系列教程,我们将覆盖所有这些概念,并告诉您如何在ASP.NET MVC 5中使用它们来构建应用程序. 首先,让我们创建一个控制器

在ASP.NET MVC应用程序中实现Server.Transfer()类似的功能

在ASP.NET MVC应用程序中,如果使用Server.Transfer()方法希望将请求转发到其它路径或者Http处理程序进行处理,都会引发“为xxx执行子请求时出错”的HttpException异常.而在最终实现Server.Transfer()操作的方法内部,我看到这样几行代码. else if (!(handler is Page)) { error = new HttpException(0x194, string.Empty); } 很明显,在方法内部,所有的IHttpHandle

ASP.NET MVC中将控制器分离到类库的实现

前言 在.ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库,所以这里不予说明,那么这时候我们就像Controller是不是也能够分离出去呢?答案是肯定的,下面我们探讨一下Controller如何分离出去. 这里我提供两种分离的方法,一是重写方法继承自IControllerFactory接口,实现里面的方法,二是MVC提供了直接在路由注册里面去控制控制器的书

7.ASP.NET MVC 5.0中的Routing【路由】

大家好,这一篇向大家介绍ASP.NET MVC路由机制.[PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers[HTML帮助类] ] 路由是一个模式匹配系统,它确保你能够将浏览器的请求,传递到控制器特定的Action方法上.路由引擎使用路由表,来将浏览器发送来的请求URL和路由表中定义的URL进行匹配.RouteConfig文件用来添加路由规则,路由是调用控制器和Action的方式. 我们在Global.asax文件中注册路由:通过在Application_Star

[转]asp.net mvc 从数据库中读取图片

本文转自:http://www.cnblogs.com/mayt/archive/2010/05/20/1740358.html 首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { public ImageFormat ContentType { get; set; } public Image image { get; set; } public strin

在ASP.NET MVC应用程序中随机获取一个字符串

在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs.com/insus/archive/2012/02/16/2354453.html 此篇实现方法多少是参照这个实现C#版本. 在应用程序下,创建一个CharacterUtility.cs: 这个类别中,分别有几个静态方法:一,为随机的小写字母: 二,是随机产生大写字母: 三,是随机产生数字: 四,是产生特殊

ASP.NET MVC开发学习过程中遇到的细节问题以及注意事项

1.datagrid中JS函数传值问题: columns: { field: 'TypeName', title: '分类名称', width: 120, sortable: true, formatter: function (value, row, index) { var contentDetails = "<a href='' style='text-decoration: none;' onclick='showDetailsDialog(" + row.ID + &q