急!搞了我一夜还是不行!GetResponseStream()返回乱码!怎么修改encoding都不成!求老师们帮帮忙!

woshichuanqi22 2012-08-25 11:34:28
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
namespace alvvtest
{
class Program
{
static void Main(string[] args)
{
string postzf = "pageindex=1";
string url = "http://www.alivv.com/ajax/Alivv.AjaxRun.WebSiteAjax,Alivv.AjaxRun.ashx?_method=BuyerWebSiteList&_session=r";


HttpWebRequest newqq = null;
HttpWebResponse newfh = null;


System.Net.ServicePointManager.Expect100Continue = false;
Uri newurl = new Uri(url);
newqq = (HttpWebRequest)WebRequest.Create(newurl);
string data = postzf;
newqq.Host = "www.alivv.com";
newqq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 2.0.50727; CIBA)";
newqq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
newqq.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
newqq.Headers.Add("Accept-Encoding", "gzip, deflate");
newqq.Headers.Add("DNT", "1");
newqq.ContentType = "text/plain; charset=UTF-8";

newqq.Referer = "http://www.alivv.com/links_gd.html";

newqq.CookieContainer = new CookieContainer() ;
newqq.Accept = "*/*";
newqq.Method = "POST";
newqq.Timeout = 60000;
//newqq.KeepAlive = true;

//newqqt.AllowAutoRedirect = true;
byte[] byteArray = Encoding.UTF8.GetBytes(data);
Stream stream = newqq.GetRequestStream();

stream.Write(byteArray, 0, byteArray.Length);
stream.Close();
newfh = (HttpWebResponse)newqq.GetResponse();
StreamReader sr = new StreamReader(newfh.GetResponseStream(), Encoding.UTF8);
string fanhuizhi = sr.ReadToEnd();



}
}
}


最后的fanhuizhi是乱码不管怎么修改encoding都不行

目前我发现在头协议当中有一句:

newqq.Headers.Add("Accept-Encoding", "gzip, deflate");

难道说信息流通过压缩了?

还有就是post部分的代码是否正确呢?希望老师们帮我看一下,被这个问题搞死了!

附上正常返回的值:
...全文
489 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个URL 打不开.
yishuihan_2012 2012-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

HttpWebResponse WebResponse = (HttpWebResponse)Http.GetResponse();

Stream responseStream = responseStream = WebResponse.GetResponseStream();
if (WebResponse.ContentEncoding.ToLower().Con……
[/Quote]

正解! StreamReader Reader = new StreamReader(responseStream, Encoding.Default);后的Encoding是关键
Castiel丶Luo 2012-08-25
  • 打赏
  • 举报
回复
先解压
孟子E章 2012-08-25
  • 打赏
  • 举报
回复
或者
request.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate

你应该先解压,再读取
孟子E章 2012-08-25
  • 打赏
  • 举报
回复
或者
request.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate

你应该先解压,再读取
孟子E章 2012-08-25
  • 打赏
  • 举报
回复
HttpWebResponse WebResponse = (HttpWebResponse)Http.GetResponse();

Stream responseStream = responseStream = WebResponse.GetResponseStream();
if (WebResponse.ContentEncoding.ToLower().Contains("gzip"))
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
else if (WebResponse.ContentEncoding.ToLower().Contains("deflate"))
responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);

StreamReader Reader = new StreamReader(responseStream, Encoding.Default);

string Html = Reader.ReadToEnd();

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧