webForumDet fria alternativet

WinForm + WebRequest.

3 svar · 494 visningar · startad av Fredde Mannen

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#1

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?

emissionMedlem sedan dec. 19996 721 inlägg
#2

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.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#3

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)

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#4

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
128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)