Public Function PostDate(ByVal url As String, ByVal PostData() As String) As String Dim Post As String = "" For Each s As String In PostData Post += s + "&" Next Post = Post.Substring(0, Post.Length - 1) Dim html As String = "" Dim encoding As Encoding = encoding.GetEncoding("GB2312") Dim data As Byte() = encoding.GetBytes(Post) Dim myRequest As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest) myRequest.Method = "POST" myRequest.ContentType = "application/x-www-form-urlencoded" myRequest.ContentLength = data.Length Dim newStream As Stream = myRequest.GetRequestStream() newStream.Write(data, 0, data.Length) newStream.Close() Dim resp As HttpWebResponse = CType(myRequest.GetResponse(), HttpWebResponse) Dim sr As StreamReader = New StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default) html = sr.ReadToEnd() Return html End Function 使用: Dim postdata As String() = {"id=luajiu", "pw=xxxx", "ipmask=0"} Dim strUrl As String = "http://bbs.cau.edu.cn/wusetu.cn/bbslogin" Dim SessionHtml As String = PostDate(strUrl, postdata)
如果没有跳转到你要的页面! 你就可以用刚刚那个函数 返回结果 的html 分析一下他跳转的页 ,然后再用下面函数去直接得到改页的html 应该你上面的那一步 就模拟登陆了!所以下面就可以直接来了! Public Shared Function GetDate(ByVal strUrl As String) As String Dim html As String = "" Dim resp As HttpWebResponse Dim req As HttpWebRequest = CType(HttpWebRequest.Create(strUrl), HttpWebRequest) req.Timeout = 25000 resp = CType(req.GetResponse(), HttpWebResponse) Dim sr As StreamReader = New StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default) html = sr.ReadToEnd()
不止是XXXX.aspx?yyyy=mmm&aaa=bbb这么简单
Dim Post As String = ""
For Each s As String In PostData
Post += s + "&"
Next
Post = Post.Substring(0, Post.Length - 1)
Dim html As String = "" Dim encoding As Encoding = encoding.GetEncoding("GB2312")
Dim data As Byte() = encoding.GetBytes(Post)
Dim myRequest As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
myRequest.Method = "POST"
myRequest.ContentType = "application/x-www-form-urlencoded"
myRequest.ContentLength = data.Length
Dim newStream As Stream = myRequest.GetRequestStream()
newStream.Write(data, 0, data.Length)
newStream.Close()
Dim resp As HttpWebResponse = CType(myRequest.GetResponse(), HttpWebResponse)
Dim sr As StreamReader = New StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default)
html = sr.ReadToEnd() Return html
End Function
使用:
Dim postdata As String() = {"id=luajiu", "pw=xxxx", "ipmask=0"} Dim strUrl As String = "http://bbs.cau.edu.cn/wusetu.cn/bbslogin"
Dim SessionHtml As String = PostDate(strUrl, postdata)
看到这个没有
你就可以用刚刚那个函数 返回结果 的html 分析一下他跳转的页 ,然后再用下面函数去直接得到改页的html 应该你上面的那一步 就模拟登陆了!所以下面就可以直接来了!
Public Shared Function GetDate(ByVal strUrl As String) As String
Dim html As String = "" Dim resp As HttpWebResponse
Dim req As HttpWebRequest = CType(HttpWebRequest.Create(strUrl), HttpWebRequest)
req.Timeout = 25000
resp = CType(req.GetResponse(), HttpWebResponse)
Dim sr As StreamReader = New StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default)
html = sr.ReadToEnd()
Return html
End Function
我的web程序中登陆过程是要修改数据库的,但是我发现数据库一直没有变化,也就是说可能登陆的程序根本没有被执行,还是不明白
这是那种开发模式?? c/s 还是b/s?还是 b/s中的 s 和 c/s中的 C 这样的关系,,,,
大哥们给解释一下..
https://evisaforms.state.gov/ds156.asp?lang=1
程序如下:
string userName = UserName.Text;
string password = Password.Text;
string url = "https://evisaforms.state.gov/ds156_complete.asp?pdf=DS156_Complete.pdf"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.AllowAutoRedirect = true;
request.ContentType="application/x-www-form-urlencoded"; string str =parameters[0];
int i = 1;
while(i < parameters.Length)
{
str+="&" + parameters[i];
i++;
}
byte[] data = System.Text.Encoding.Default.GetBytes(str);
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data,0,data.Length);
stream.Flush();
stream.Close(); System.Text.Encoding encode = System.Text.Encoding.GetEncoding("gb2312"); HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch(WebException ex)
{
MessageBox.Show(ex.Message + ex.Source + ex.Status.ToString());
return;
}
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream, encode);
string result = reader.ReadToEnd();
responseStream.Close();
reader.Close();
string path = ""; Result.Text = result; if(response.ContentType == "text/html")
{
path = "c:\\result.htm";
}
else if(response.ContentType == "application/pdf")
path = "c:\\result.pdf";
else
path = "c:\\result.dat";
FileStream fs = new FileStream(path,FileMode.Create);
data = System.Text.Encoding.Default.GetBytes(result);
fs.Write(data, 0,data.Length);
fs.Flush();