实用C#制作Discuz发帖

本文探讨了一段使用C#进行HTTP POST请求的代码,该代码用于网站登录及发帖功能。登录功能正常,但在尝试发帖时遇到验证失败的问题,提示信息涉及防火墙和个人防火墙软件的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 private string Post(string url, string postdata)
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength = postdata.Length;
myHttpWebRequest.Method = "POST";
myHttpWebRequest.CookieContainer = myCookieContainer;

Stream myRequestStream = myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postdata);

myStreamWriter.Close();
myRequestStream.Close();

HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);

Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));

string outdata = myStreamReader.ReadToEnd();

myStreamReader.Close();
myResponseStream.Close();

return outdata;

}

private string Post2(string url, string postdata)
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer = myCookieContainer;//*
//刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string outdata = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return outdata;
}
问题补充:发帖代码:
richTextBox1.Text = Post("http://test.cn/logging.php?action=login&loginsubmit=true", "formhash=f0adc463&cookietime=2592000&loginfield=username&username=admin&password=admin&userlogin=%B5%C7%C2%BC");
richTextBox1.Text = Post2("http://test.cn/post.php?action=newthread&fid=2&extra=&topicsubmit=yes", @"formhash=7219d72f&isblog=&frombbs=1&readperm=0&price=0&subject=测试标题&iconid=0&message=测试内容&attach[]=&filename=&localid[]=&attachperm[]=0&attachprice[]=0&attachdesc[]=&attach[]=&filename='C:/Documents and Settings/Administrator/My Documents/新建文件夹/1.jpg'");

测试后登陆能够成功,但是发帖会出现“您的请求来路不正确或验证字串不符,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。”的错误,请问怎么解决?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值