Värdena i postData måste url-kodas (med System.Web.HttpUtility.UrlEncode)
Om du loggar in med en WebRequest så kommer du inte att vara inloggad i en WebBrowser. De är ju olika webbläsare.
3 svar · 494 visningar · startad av Fredde Mannen
Har satt ihop följande
Dim postData As String
postData = "fnamn=" + fnamn.Text
postData &= "&enamn=" + enamn.Text
postData &= "&pwd=" + pwd.Text
Dim data() As Byte = Encoding.ASCII.GetBytes(postData)
' Prepare web request...
Dim myRequest As WebRequest = WebRequest.Create("http://www.grjj.se/site/do_login.asp")
myRequest.Method = "POST"
myRequest.ContentType = "application/x-www-form-urlencoded"
myRequest.ContentLength = data.Length
Dim newStream As Stream = myRequest.GetRequestStream()
' Send the data.
newStream.Write(data, 0, data.Length)
newStream.Close()
' fetch the data.
Dim loWebResponse As WebResponse = myRequest.GetResponse()
Dim loResponseStream As StreamReader = New StreamReader(loWebResponse.GetResponseStream())
Dim lcHtml As String = loResponseStream.ReadToEnd()
Dim uri As Uri = New Uri("http://www.grjj.se/site/medlemmar/")
Form2.Visible = True
Form2.WebBrowser1.Url = uri
Visst jag lyckas kontakta sidan, men den verkar inte skicka informationen på rätt sätt, eller så, för jag får alltid inloggningsfel.
Vad är det som saknas?
Värdena i postData måste url-kodas (med System.Web.HttpUtility.UrlEncode)
Om du loggar in med en WebRequest så kommer du inte att vara inloggad i en WebBrowser. De är ju olika webbläsare.
emission skrev:
Värdena i postData måste url-kodas (med System.Web.HttpUtility.UrlEncode)
Om du loggar in med en WebRequest så kommer du inte att vara inloggad i en WebBrowser. De är ju olika webbläsare.
Hur skulle du föreslå att man går tillväga då, att genom en WindowForm kunna göra inloggningen till sidan och därefter öppna "siten" i en WinForm (med kontrollen webbrowser då givetvis)
Hehe.. missa ju dels att hämta kakan och plus lite andra saker.. :P
Så nu funkar det som jag vill.. (har dock inte prövat med ny browser än).
Dim postData As String
postData = "fnamn=" + System.Web.HttpUtility.UrlEncode(fnamn.Text)
postData &= "&enamn=" + System.Web.HttpUtility.UrlEncode(enamn.Text)
postData &= "&pwd=" + System.Web.HttpUtility.UrlEncode(pwd.Text)
' Prepare web request...
Dim myRequest As HttpWebRequest = HttpWebRequest.Create("http://www.grjj.se/site/do_login.asp")
Dim CookieC As New Net.CookieContainer
With myRequest
.Method = "POST"
.ContentType = "application/x-www-form-urlencoded"
.KeepAlive = False
.AllowAutoRedirect = False
.CookieContainer = CookieC
End With
Dim enc As System.Text.Encoding = System.Text.Encoding.UTF8
Dim bPostBuffer As Byte() = enc.GetBytes(postData)
myRequest.ContentLength = bPostBuffer.Length
Dim newStream As Stream = myRequest.GetRequestStream()
' Send the data.
newStream.Write(bPostBuffer, 0, bPostBuffer.Length)
newStream.Close()
Dim myResponse As HttpWebResponse = CType(myRequest.GetResponse(), HttpWebResponse)
CookieC.Add(myResponse.Cookies)
myRequest = WebRequest.Create("http://www.grjj.se/site/medlemmar/")
With myRequest
.KeepAlive = False
.Method = "GET"
.ContentType = "application/x-www-form-urlencoded"
.AllowAutoRedirect = True
.CookieContainer = CookieC
End With
myResponse = myRequest.GetResponse()
Dim sReader As StreamReader = New StreamReader(myResponse.GetResponseStream)
Dim HTML As String = sReader.ReadToEnd