OptionExplicitOn OptionStrictOn Imports System.Net
Imports System.Web
Imports System.Text
Imports System.IO
Namespace SoilNET.KRL.WebUtility PublicClass LoginRequest Public Cookies As CookieCollection SubNew() End Sub PublicFunction Login(ByVal Url AsString, ByVal Params AsString) AsString Dim strResult AsString = getPageByPost(Url, Params) Return strResult End Function PublicFunction getPageByPost(ByVal url AsString, ByVal payload AsString, OptionalByVal needEncode AsBoolean = False) AsString Dim result As HttpWebResponse Dim strResult AsString = Try Dim req As HttpWebRequest Dim RequestStream As Stream Dim ReceiveStream As Stream Dim encode As Encoding Dim sr As StreamReader req = CType(WebRequest.Create(url), HttpWebRequest) req.Method = POST req.ContentType = applicationx-www-form-urlencoded req.CookieContainer = New CookieContainer req.UserAgent = Mozilla4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705) IfNot Me.Cookies IsNothingThen req.CookieContainer.Add(New Uri(url), Me.Cookies) EndIf Dim SomeBytes() AsByte Dim UrlEncoded AsNew StringBuilder Dim reserved() AsChar = {ChrW(63), ChrW(61), ChrW(38)} If payload NothingThen If needEncode Then'有些网站encode后反而出现中文乱码所以加上这个开关 Dim i AsInteger = 0 Dim j AsInteger While i payload.Length j = payload.IndexOfAny(reserved, i) If j = -1 Then UrlEncoded.Append(HttpUtility.UrlEncode(payload.Substring(i, payload.Length - i))) ExitWhile EndIf UrlEncoded.Append(HttpUtility.UrlEncode(payload.Substring(i, j - i))) UrlEncoded.Append(payload.Substring(j, 1)) i = j + 1 EndWhile SomeBytes = System.Text.Encoding.ASCII.Default.GetBytes(UrlEncoded.ToString()) Else SomeBytes = System.Text.Encoding.ASCII.Default.GetBytes(payload) EndIf req.ContentLength = SomeBytes.Length RequestStream = req.GetRequestStream() RequestStream.Write(SomeBytes, 0, SomeBytes.Length) RequestStream.Close() Else req.ContentLength = 0 EndIf 'result.Cookies = New CookieCollection result = CType(req.GetResponse(), HttpWebResponse) ReceiveStream = result.GetResponseStream() encode = System.Text.Encoding.ASCII.Default sr = New StreamReader(ReceiveStream, encode) Dim read(256) AsChar Dim count AsInteger = sr.Read(read, 0, 256) DoWhile count 0 strResult &= NewString(read, 0, count) count = sr.Read(read, 0, 256) Loop Me.Cookies = req.CookieContainer.GetCookies(New Uri(url)) Catch Exc As Exception Debug.Write(Exc.Message) Finally IfNot result IsNothingThen result.Close() EndIf EndTry Return strResult End Function PublicFunction getPageByUrl(ByVal url AsString) AsString Dim result As HttpWebResponse Dim strResult AsString = Try Dim req As HttpWebRequest Dim ReceiveStream As Stream Dim encode As Encoding Dim sr As StreamReader req = CType(WebRequest.Create(url), HttpWebRequest) req.Method = GET req.CookieContainer = New CookieContainer req.UserAgent = Mozilla4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705) IfNot Me.Cookies IsNothingThen req.CookieContainer.Add(New Uri(url), Me.Cookies) EndIf result = CType(req.GetResponse(), HttpWebResponse) ReceiveStream = result.GetResponseStream() encode = System.Text.Encoding.ASCII.Default sr = New StreamReader(ReceiveStream, encode) Dim read(256) AsChar Dim count AsInteger = sr.Read(read, 0, 256) DoWhile count 0 strResult &= NewString(read, 0, count) count = sr.Read(read, 0, 256) Loop Me.Cookies = req.CookieContainer.GetCookies(New Uri(url)) Catch Exc As Exception Finally IfNot result IsNothingThen result.Close() EndIf EndTry Return strResult End Function End Class End Namespace