做了个c#下载资料的,服务器是IIS的,对url,是全英文的HttpWebResponse response = (HttpWebResponse)request.GetResponse();就可以请求并下载下来;但是含了汉字的url就访问不到,报404异常。而且含了汉字的url用IE和迅雷都可以正常下载,这到底是为什么呢,会不会是编码的问题?但是我也不知道服务器的编码,纠结啊... ... 
private HttpWebRequest request;
        private void ConnectiongWeb(string url)
        {
            if (url.Equals(""))
            {
                return;
            }
            try
            {
                request = (HttpWebRequest)HttpWebRequest.Create(url);                request.ServicePoint.Expect100Continue = false;//                 request.ServicePoint.ConnectionLimit = 10000;//
                System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
                string urlsss = HttpUtility.UrlDecode(request.Address.AbsoluteUri);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                MessageBox.Show("连接成功!");
            }
            catch (System.Exception ex)
            {
                Debug.Assert(false, ex.ToString());
                MessageBox.Show("连接失败!");
            }        }

解决方案 »

  1.   

    但是含了汉字的url就访问不到,报404异常。
    是为了编码不对。request = (HttpWebRequest)HttpWebRequest.Create(url);
    你这句改成request = (HttpWebRequest)HttpWebRequest.Create(Server.UrlEncode(url));试试
      

  2.   

    可是哪儿有server呢,我这是在本地,我试了  HttpUtility.UrlEncode(instr, Encoding.GetEncoding("gb2312"));utf-8,gbk,gb2312,都不行。
      

  3.   

    跟踪一下看看 string urlsss = HttpUtility.UrlDecode(request.Address.AbsoluteUri);
    urlsss 是不是有效地址,里面是不是有乱码之类的
      

  4.   

    是正确的,就是那个url复制到IE 里还能下载呢,如果不正确Create的时候就会报错。