加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C#中HttpWebRequest获取中文乱码的解决

(2012-06-29 15:44:23)
标签:

杂谈

分类: C#
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Web;
using System.IO;
using System.Windows.Forms;

namespace Client.Http
{
    public class HttpSend
    {
        public static String HttpGetUrl(String url)
        {
            string strReturn = string.Empty;
            String urlEsc = url;
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(urlEsc);
            req.Method = "GET";
            try
            {
                using (WebResponse wr = req.GetResponse())
                {
                    Stream stream = wr.GetResponseStream();
                    byte[] buf = new byte[1024];
                    while (true)
                    {
                        int len = stream.Read(buf, 0, buf.Length);
                        if (len <= 0)//[2011-8-22]  修改len < 0 =》 len <= 0 解决死循环
                            break;
                        strReturn += System.Text.Encoding.GetEncoding("utf-8").GetString(buf, 0, len);

                    }

                }
            }
            catch (Exception ex)
            {
                throw ex;
                //LogFile.WriteLine("HttpSend.HttpGetUrl exception url=" + url);
                //LogFile.WriteLine("HttpSend.HttpGetUrl exception " + ex.Message);
            }
            return strReturn;
        }

        public static String HttpPostData(String url, String data)
        {
            string strReturn = string.Empty;
            byte[] byteData = Encoding.UTF8.GetBytes(data);
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = byteData.Length;

            try
            {
                using (Stream reqStream = req.GetRequestStream())
                {
                    reqStream.Write(byteData, 0, byteData.Length);//发送数据
                }

                using (HttpWebResponse wr = (HttpWebResponse)req.GetResponse())
                {
                    if (string.Empty.Equals(GlobalData.SESSION_KEY) || null == GlobalData.SESSION_KEY)
                    {
                        string cookie = wr.Headers["Set-Cookie"];
                        GlobalData.SESSION_KEY = cookie.Substring(0, cookie.LastIndexOf('!'));
                    }
                   
                    Stream stream = wr.GetResponseStream();
                    strReturn += new StreamReader(stream, System.Text.Encoding.UTF8).ReadToEnd();//解决乱码:utf-8 + streamreader.readtoend
                   
                   
                }
            }
            catch (Exception ex)
            {
                throw ex;
                //LogFile.WriteLine("HttpSend.HttpPostData exception url=" + url);
                //LogFile.WriteLine("HttpSend.HttpPostData exception " + ex.Message);
            }

            return strReturn;
        }
    }
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有