HttpWebRequest 设置参数时出现个诡异问题

huiji5351 2016-04-17 03:02:32
在获取post流时,这句代码就把封包传送了 requst.GetRequestStream();.
执行这句的时候就没有发送封包 HttpWebResponse se = requst.GetResponse() as HttpWebResponse;

string url = "http://w.qzone.qq.com/cgi-bin/likes/internal_dolike_app?g_tk=" + _key;
HttpWebRequest requst = WebRequest.Create(url) as HttpWebRequest;

requst.Method = "POST";
requst.Host = "w.qzone.qq.com";
requst.AutomaticDecompression = DecompressionMethods.GZip;
requst.KeepAlive = true;
requst.Headers[HttpRequestHeader.AcceptLanguage] = "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3";
requst.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
requst.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0";
requst.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
requst.ContentType = "application/x-www-form-urlencoded";
//参数设置
string shuoshuoid = "46c54c5998411257d4040200";
byte[] btbyte = Encoding.UTF8.GetBytes("qzreferrer=http%3A%2F%2Fuser.qzone.qq.com%2F" + _qq_fuwu + "%2F"
+ "&opuin=" + _qq_fuwu
+ "&unikey=http:%3A%2F%2Fuser.qzone.qq.com%2F" + _qq_kehu + "%2Fmood%2F" + shuoshuoid
+ "&curkey=http:%3A%2F%2Fuser.qzone.qq.com%2F" + _qq_kehu + "%2Fmood%2F" + shuoshuoid
+ "&from=1"
+ "&appid=311"
+ "&typeid=0"
+ "&abstime=1460869123"
+ "&fid=" + shuoshuoid
+ "&active=0"
+ "&fupdate=1");
requst.ContentLength = btbyte.Length;
//获取流
//*****************主要问题出在这里,获取参数流时停顿了下,然后用封包拦截器,看了下在这里他就已经上传封包了*******
Stream s = requst.GetRequestStream();
s.Write(btbyte, 0, btbyte.Length);
s.Close();


try
{
HttpWebResponse se = requst.GetResponse() as HttpWebResponse;//然后这一句就没有任何停顿的执行过去了
StreamReader streamReader;
string responseContent;
streamReader = new StreamReader(se.GetResponseStream(), Encoding.UTF8);
responseContent = streamReader.ReadToEnd();
Encoding.UTF8.GetString(Encoding.Default.GetBytes(responseContent));
}
catch (Exception)
{
}
...全文
175 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huiji5351 2016-05-26
  • 打赏
  • 举报
回复
回来回报下,最终解决方法,自己用TCP实现HTTP协议进行连接..微软提供的这个类库真的有未知BUG
tcmakebest 2016-04-17
  • 打赏
  • 举报
回复
已经有了结果, 再看一下也不需要重新获取啊, 楼主可以重新发起另一个请求.
tcmakebest 2016-04-17
  • 打赏
  • 举报
回复
要读取流的内容 是不是要把流的指针调回到开头位置呢
huiji5351 2016-04-17
  • 打赏
  • 举报
回复
引用 3 楼 lovelj2012 的回复:
[quote=引用 2 楼 huiji5351 的回复:] [quote=引用 1 楼 lovelj2012 的回复:] 1、HttpWebResponse用完要Close以释放流和连接 2、没停顿过去了,是继续向下执行代码,还是进入catch了?
继续向下走没有引发异常.但是也没有发送任何数据[/quote] requst.GetResponse()是获取服务器应答,用streamReader.ReadToEnd()读取不到数据,说明服务器没有实质性应答咯[/quote] 也就是说服务器拒绝我的应答哦?但是我也用其他封包发送器,服务器就正常反馈信息.
江南小鱼 2016-04-17
  • 打赏
  • 举报
回复
引用 2 楼 huiji5351 的回复:
[quote=引用 1 楼 lovelj2012 的回复:] 1、HttpWebResponse用完要Close以释放流和连接 2、没停顿过去了,是继续向下执行代码,还是进入catch了?
继续向下走没有引发异常.但是也没有发送任何数据[/quote] requst.GetResponse()是获取服务器应答,用streamReader.ReadToEnd()读取不到数据,说明服务器没有实质性应答咯
huiji5351 2016-04-17
  • 打赏
  • 举报
回复
引用 1 楼 lovelj2012 的回复:
1、HttpWebResponse用完要Close以释放流和连接 2、没停顿过去了,是继续向下执行代码,还是进入catch了?
继续向下走没有引发异常.但是也没有发送任何数据
江南小鱼 2016-04-17
  • 打赏
  • 举报
回复
1、HttpWebResponse用完要Close以释放流和连接 2、没停顿过去了,是继续向下执行代码,还是进入catch了?

111,128

社区成员

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

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

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