c#用httpwebrequest实现自动发帖

dennis_ben 2014-08-11 02:23:24
c#用httpwebrequest实现自动发帖为什么会出现这种情况?中间有continue,源代码在下面,求教育大婶们!
POST /user/logout HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: www.tianya.cn
Content-Length: 352
Expect: 100-continue
Connection: Keep-Alive

HTTP/1.1 100 Continue

__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=/wEPDwULLTE1MzYzODg2NzZkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtjaGtSZW1lbWJlcm1QYDyKKI9af4b67Mzq2xFaL9Bt&__EVENTVALIDATION=/wEWBQLWwpqPDQLyj/OQAgK3jsrkBALR55GJDgKC3IeGDE1m7t2mGlasoP1Hd9hLaFoI2G05&tbUserName=hayabusa2014&tbPassword=cyj12130913gf&btnLogin=? ?&txtReturnUrl=http://home.cnblogs.com/HTTP/1.1 200 OK
Server: nginx
Date: Mon, 11 Aug 2014 06:08:28 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding

代码:

private void btnSubmit_Click(object sender, EventArgs e)
{
string postData = string.Format("__EVENTTARGET=Editor$Edit$lkbPost&__EVENTARGUMENT=&__VIEWSTATE=&Editor$Edit$txbTitle={0}&Editor$Edit$EditorBody={1}&Editor$Edit$APOptions$APSiteHome$chkDisplayHomePage=on&Editor$Edit$Advanced$ckbPublished=on&Editor$Edit$Advanced$chkComments=on&Editor$Edit$Advanced$chkMainSyndication=on&Editor$Edit$Advanced$txbEntryName=&Editor$Edit$Advanced$txbExcerpt=&Editor$Edit$Advanced$txbTag=&Editor$Edit$Advanced$tbEnryPassword=",txtTitle.Text,rtxtContent.Text);
string Url = @"http://bbs.tianya.cn/compose.jsp?item=funinfo&sub=全部";
ASCIIEncoding encoding=new ASCIIEncoding ();
byte[] byt = encoding.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "Post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byt.Length;
request.KeepAlive = true;
request.CookieContainer = Ccontainter; //返回的cookie会附加在这个容器里面
//发送数据

Stream newStream = request.GetRequestStream();
newStream.Write(byt, 0, byt.Length);


//以下俩句不可缺少
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
newStream = response.GetResponseStream();
StreamReader reader = new StreamReader(newStream, Encoding.UTF8);
string text = reader.ReadToEnd();
reader.Close();
newStream.Close();
if (text.IndexOf("发布成功") > 0)
{
MessageBox.Show("发布成功!");
txtTitle.Text = "";
rtxtContent.Text = "";

}
else
{
MessageBox.Show("发布成功!");

}
}
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dennis_ben 2014-08-14
  • 打赏
  • 举报
回复
还是用webbrowser做了一个!散分了!
WM_JAWIN 2014-08-13
  • 打赏
  • 举报
回复
你给出来的数据上没有cookie,你说有的话,那肯定是参数错了
dennis_ben 2014-08-12
  • 打赏
  • 举报
回复
有cookie的,webbrowser拖控件不太好吧!
梦吟情诗 2014-08-12
  • 打赏
  • 举报
回复
这种方式没有直接用WebBrowser来发贴好控制
WM_JAWIN 2014-08-12
  • 打赏
  • 举报
回复
没有Cookie信息
dennis_ben 2014-08-11
  • 打赏
  • 举报
回复
感谢大家对我学习疑问提供的帮助!
dennis_ben 2014-08-11
  • 打赏
  • 举报
回复
这是+100continue异常后的结果,但是下面那个是发帖的报文,不是登陆要加的username和pw,显示成功了但找不到帖子,我是在天涯上发的帖子: POST /compose.jsp?item=funinfo&sub=%E5%85%A8%E9%83%A8 HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: bbs.tianya.cn Content-Length: 224 Connection: Keep-Alive title=test&text=sdgsdgdfgdgd&categoryId=0&blogControl=99&passwordProtedted=&passWord=&editBlogControl=99&postFormId=&newLetterId=&blog_pic_id=&pic_path=&activity=&id=&relative_optype=&isVip=false&jf_vip_em=true&requestToken=HTTP/1.1 200 OK Server: nginx Date: Mon, 11 Aug 2014 07:36:29 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: close Vary: Accept-Encoding
WM_JAWIN 2014-08-11
  • 打赏
  • 举报
回复
System.Net.ServicePointManager.Expect100Continue = false;
执行一次即可。
dennis_ben 2014-08-11
  • 打赏
  • 举报
回复
看到相应报文中间的100 continue没,这个是不该有的,抓包后发现我的ack都不是一样的,发送一个大的http包是要分片的,分偏后每个片的ack应该是相同的,这样发过去后才知道这是一个包,不然服务器会当成几个包处理,就出现了100 continue,请教大神怎么处理这种情况!
mlqxj35674 2014-08-11
  • 打赏
  • 举报
回复
how ???????

110,533

社区成员

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

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

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