关于 HttpWebRequest的 post问题

liangzha 2008-08-01 06:30:29
HttpWebRequest httpWebRequest;
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);

httpWebRequest.CookieContainer = cc;
httpWebRequest.ContentType = contentType;
httpWebRequest.Referer = url;
httpWebRequest.Accept = accept;
httpWebRequest.UserAgent = userAgent;
httpWebRequest.Method = method == Method.POST ? "POST" : "GET";
httpWebRequest.ContentLength = byteRequest.Length;


httpWebRequest.KeepAlive = true;

Stream stream = httpWebRequest.GetRequestStream(); //断点1

stream.Write(byteRequest, 0, byteRequest.Length); //断点2
stream.Close();


IE正常抓包如下

POST /marry/Voting.aspx?SignUpID=246 HTTP/1.1
Host: shuangxi.tianya.cn
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://shuangxi.tianya.cn/marry/Voting.aspx?SignUpID=246
Cookie: __cid=57; CheckCode=6B26D
Content-Type: application/x-www-form-urlencoded
Content-Length: 216

__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKMTQ3MTgwNDg3NWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDGltZ2J0blZvdGluZ4SbNsAMdizBY2Xr9pI3MKQgJQcF&txtCheckCode=6BZ6D&imgbtnVoting.x=22&imgbtnVoting.y=6



如上代码抓包如下

包1:
POST /marry/Voting.aspx?SignUpID=246 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Referer: http://shuangxi.tianya.cn/marry/Voting.aspx?SignUpID=246
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Host: shuangxi.tianya.cn
Cookie: CheckCode=XB460
Content-Length: 180
Expect: 100-continue

包2
txtCheckCode=XB460&__VIEWSTATE=%2FwEPDwUKMTQ3MTgwNDg3NWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDGltZ2J0blZvdGluZ4SbNsAMdizBY2Xr9pI3MKQgJQcF&_EVENTTARGET=&__EVENTARGUMENT=


也就是说 包1是在断点1的时候就发出去了,包2在断点2的时候才发出去
但是服务器已经在断点1的时候做出反应了,根本不接受包2的信息,请问达人改如何解决
...全文
289 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfzwenzhu 2008-08-05
  • 打赏
  • 举报
回复
mark
liangzha 2008-08-05
  • 打赏
  • 举报
回复
自己写了个socket后来发现webrequest是可以用的 结贴
wdgphc 2008-08-02
  • 打赏
  • 举报
回复
呵呵,我今天试了一下,还真是象你说的.

分两个包,一个是包头,一个是包体.
但是接收端收到包头后会按照
Content-Length: 180
等待包体.如超时则丢弃,如正常接收,还是按一个完整数据来处理.
可能这就是HTTP/1.1的协议.
liangzha 2008-08-02
  • 打赏
  • 举报
回复
顶 求助
liangzha 2008-08-02
  • 打赏
  • 举报
回复
我用sniffer抓包确实是这样的

ie发一个包 服务器返回

程序发一个包 服务器反应 第二个包不做反应

只是没地方上传截图给你看了
liangzha 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wdgphc 的回复:]
也就是说 包1是在断点1的时候就发出去了,包2在断点2的时候才发出去
但是服务器已经在断点1的时候做出反应了,根本不接受包2的信息,请问达人改如何解决


-------------

断点1是建立一个流并初始化,把Header等信息填入
断点2才是真是把信息POST过去.

否则你把断点2的语句注释掉,看服务器是否有反应.
[/Quote]

我这个是自己详细截留包才做出来的结论,确实在包1发出后,服务器已经做出反应了
我没有地方上传图片
断点2屏蔽 确实还是发包1 不信你自己测试下
而IE就是一气何成
aimeast 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 liangzha 的回复:]
这个方法不行我还是改写socket自己处理
[/Quote]
没有必要啊,处理HTTP请求用WebRequest还是非常方便的。自己用Socket的话,还要自己构造头部,自己解析头部,然后在接收的时候也非常麻烦。
liangzha 2008-08-02
  • 打赏
  • 举报
回复
这个方法不行我还是改写socket自己处理
suyiming 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 isline 的回复:]
高科技。。。
[/Quote]
  • 打赏
  • 举报
回复
高科技。。。
wenbin 2008-08-01
  • 打赏
  • 举报
回复
汗。。。位置没反。。。。
shy_0401 2008-08-01
  • 打赏
  • 举报
回复
好长,看完再说
aimeast 2008-08-01
  • 打赏
  • 举报
回复
谁说IE抓包就是一个包发送完的?
IE一样是用两个包来发送数据的。第一个就是数据头,第二个才是提交的数据内容。
你这样做是没有问题的。
我最近用WebRequest还是挺多的。
你这样出错很可能是提交的数据不对。关键是那些以“__”开头的字段,千万不要错了。
wdgphc 2008-08-01
  • 打赏
  • 举报
回复
也就是说 包1是在断点1的时候就发出去了,包2在断点2的时候才发出去
但是服务器已经在断点1的时候做出反应了,根本不接受包2的信息,请问达人改如何解决


-------------

断点1是建立一个流并初始化,把Header等信息填入
断点2才是真是把信息POST过去.

否则你把断点2的语句注释掉,看服务器是否有反应.

wenbin 2008-08-01
  • 打赏
  • 举报
回复
stream.Write(byteRequest, 0, byteRequest.Length); //断点2
stream.Close();

Stream stream = httpWebRequest.GetRequestStream(); //断点1
这样看看?
位置反了
liangzha 2008-08-01
  • 打赏
  • 举报
回复
没人知道吗

110,535

社区成员

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

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

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