Nach gesendeter PostData auf Server-Antwort warten
Zum Glück habe ich wenigstens das Postdata schon und muss nur noch das mit dem Warten hinbekommen
Hallo
Ich habe eine PostData erstellt:
Jetzt möchte ich auf die Server-Anwort warten.
Weil mit <code typ="vb>Dim Response As HttpWebResponse = Request.GetResponse()
DataStream = Response.GetResponseStream()
Dim reader As New StreamReader(DataStream)
Dim ServerResponse As String = reader.ReadToEnd()
reader.Close()
DataStream.Close()
Response.Close()
If InStr(ServerResponse, "Sie wurden erfolgreich angemeldet.") Then
MessageBox.Show("Login OK")
Else
MessageBox.Show("Login nicht OK")
End If scheinst ja nicht zu gehen...
Was soll ich dann machen?
Hallo
Ich habe eine PostData erstellt:
Dim Request As HttpWebRequest = CType(WebRequest.Create("*********************window.html?bk=79139b87d1056cedb0a4aff6d5d5da51"), HttpWebRequest)
Request.Method = "POST"
Request.ContentType = "application/x-www-form-urlencoded"
Dim Post As String = "caller=" & number
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
Request.ContentLength = byteArray.Length
Dim DataStream As Stream = Request.GetRequestStream()
DataStream.Write(byteArray, 0, byteArray.Length)
DataStream.Close()
Dim Response As HttpWebResponse = Request.GetResponse()
DataStream = Response.GetResponseStream()
Jetzt möchte ich auf die Server-Anwort warten.
Weil mit <code typ="vb>Dim Response As HttpWebResponse = Request.GetResponse()
DataStream = Response.GetResponseStream()
Dim reader As New StreamReader(DataStream)
Dim ServerResponse As String = reader.ReadToEnd()
reader.Close()
DataStream.Close()
Response.Close()
If InStr(ServerResponse, "Sie wurden erfolgreich angemeldet.") Then
MessageBox.Show("Login OK")
Else
MessageBox.Show("Login nicht OK")
End If scheinst ja nicht zu gehen...
Was soll ich dann machen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 191753
Url: https://administrator.de/forum/nach-gesendeter-postdata-auf-server-antwort-warten-191753.html
Ausgedruckt am: 21.12.2024 um 08:12 Uhr
6 Kommentare
Neuester Kommentar
Was geht denn nicht?
Eventuell beschäftigst du dich mal mit "Debugging".
Lass dir mal den Serverresponse ausgeben.
Was du beachten solltest ist, dass nach dem Senden der Postdaten vom Webserver im Normalfall Cookies mitgesendet werden. Bei weiteren Anfragen werden diese benötigt (darüber wirst du bzw. deine Anfrage identifiziert)
Das heisst. Du logst dich ein via PostRequest und du erhältst ein (paar) Cookie(s).
Möchtest du dann Daten aus der Website auslesen, welche nur nach dem Login zur Verfügung stehen, dann machst du das via GET Request UND sendest deine empfangenen (Session) Cookies mit.
Hier mal ein Bsp:
Eventuell beschäftigst du dich mal mit "Debugging".
Lass dir mal den Serverresponse ausgeben.
Was du beachten solltest ist, dass nach dem Senden der Postdaten vom Webserver im Normalfall Cookies mitgesendet werden. Bei weiteren Anfragen werden diese benötigt (darüber wirst du bzw. deine Anfrage identifiziert)
Das heisst. Du logst dich ein via PostRequest und du erhältst ein (paar) Cookie(s).
Möchtest du dann Daten aus der Website auslesen, welche nur nach dem Login zur Verfügung stehen, dann machst du das via GET Request UND sendest deine empfangenen (Session) Cookies mit.
Hier mal ein Bsp:
Dim POSTData As String = "user=mono&pass=123"
Dim strURL As String = "http://www.website.de/login.php"
Dim Request As Net.HttpWebRequest = Net.HttpWebRequest.Create(strURL)
Request.CookieContainer = New Net.CookieContainer()
Request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"
Request.Method = "POST"
Request.AllowAutoRedirect = True
Request.ContentType = "application/x-www-form-urlencoded"
Dim encoding As New System.Text.ASCIIEncoding() 'Use UTF8Encoding for XML requests
Dim postByteArray() As Byte = encoding.GetBytes(POSTData)
Request.ContentLength = postByteArray.Length
Dim postStream As IO.Stream = Request.GetRequestStream()
postStream.Write(postByteArray, 0, postByteArray.Length)
postStream.Close()
Dim Response As Net.HttpWebResponse = Request.GetResponse
Response.Cookies = Request.CookieContainer.GetCookies(Request.RequestUri)
Dim Reader As IO.StreamReader = New IO.StreamReader(Response.GetResponseStream)
'Ausgabe des Responses
Debug.Print(Reader.ReadToEnd())
'ausgabe der Cookies
For Each SetCookie As Net.Cookie In Response.Cookies
Debug.Print(SetCookie.Name & ": " & SetCookie.Value)
Next