CookieContainer cc = new CookieContainer();
string url = "http://bbs.runsky.com/bbs/logging.php";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
string s = "action=login&username=xs1024&password=tttt";
byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes(s);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
req.CookieContainer = cc;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close(); HttpWebResponse wr = (HttpWebResponse)req.GetResponse(); StreamReader sr2 = new StreamReader(wr.GetResponseStream(), Encoding.Default);
string text2 = sr2.ReadToEnd();
richTextBox1.AppendText(text2);
这就是登录的问题,不管怎么设置,最后看返回来的页,都是没有登录!!!!!!!
string url = "http://bbs.runsky.com/bbs/logging.php";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
string s = "action=login&username=xs1024&password=tttt";
byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes(s);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
req.CookieContainer = cc;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close(); HttpWebResponse wr = (HttpWebResponse)req.GetResponse(); StreamReader sr2 = new StreamReader(wr.GetResponseStream(), Encoding.Default);
string text2 = sr2.ReadToEnd();
richTextBox1.AppendText(text2);
这就是登录的问题,不管怎么设置,最后看返回来的页,都是没有登录!!!!!!!
CookieContainer cc = new CookieContainer();
string url = "http://bbs.runsky.com/bbs/logging.php";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
string s = "action=login&username=xs1024&password=tttt";
byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes(s);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
req.CookieContainer = cc;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close(); HttpWebResponse wr = (HttpWebResponse)req.GetResponse(); StreamReader sr2 = new StreamReader(wr.GetResponseStream(), Encoding.Default);
string text2 = sr2.ReadToEnd();
richTextBox1.AppendText(text2);
- [System.Net.ConnectStream] {System.Net.ConnectStream} System.Net.ConnectStream
+ base {System.Net.ConnectStream} System.IO.Stream {System.Net.ConnectStream}
CanRead false bool
CanSeek false bool
CanTimeout true bool
CanWrite true bool
+ Length “((System.Net.ConnectStream)(requestStream)).Length”引发了“System.NotSupportedException”类型的异常 long {System.NotSupportedException}
+ Position “((System.Net.ConnectStream)(requestStream)).Position”引发了“System.NotSupportedException”类型的异常 long {System.NotSupportedException}
ReadTimeout 300000 int
WriteTimeout 300000 int
在FORM在 是这样的,不知道,后面的& 是什么意思,是不是这个问题
action=logging.php?action=login&
只要用C#写一个POST请求发给服务器就OK了
下面是一个POST登陆的例子,按样你要的发帖、回复帖的表单该一下就行了
通过HttpWebRequest 发送 POST 请求实现自动登陆
怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数据到网站等。
假如某个页面有个如下的表单(Form): <form name="form1" action="http://www.breakn.com/login.asp" method="post">
<input type="text" name="userid" value="">
<input type="password" name="password" value="">
</form> 从表单可看到表单有两个表单域,一个是userid另一个是password,所以以POST形式提交的数据应该包含有这两项。
其中POST的数据格式为:
表单域名称1=值1&表单域名称2=值2&表单域名称3=值3……
要注意的是“值”必须是经过HTMLEncode的,即不能包含“ <> =&”这些符号。 本例子要提交的数据应该是:
userid=value1&password=value2 用C#写提交程序:
string strId = "guest";
string strPassword= "123456"; ASCIIEncoding encoding=new ASCIIEncoding();
string postData="userid="+strId;
postData += ("&password="+strPassword); byte[] data = encoding.GetBytes(postData); // Prepare web request
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://www.here.com/login.asp"); myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream(); // Send the data.
newStream.Write(data,0,data.Length);
newStream.Close(); // Get response
HttpWebResponse myResponse=(HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.Default);
string content = reader.ReadToEnd();
Response.Write(content);
用户名/密码: xs1024/tttt
string url = "http://bbs.runsky.com/bbs/logging.php?action=login&";
string s = "username=xs1024&password=tttt&loginsubmit=%CC%E1+%26nbsp%3B+%BD%BB";这里最好是ASCII
byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(s);
是什么意思 ?谢谢
=%CC%E1+%26nbsp%3B+%BD%BB 翻译过来是 提 交下面是登陆面页中的
<input type="submit" name="loginsubmit" value="提 交" >
用Wireshark以前叫Ethereal,抓包工具运行后正常登陆一下,能抓取到实际发送的数据包,然后自己对照分析以下就OK了~!