Hallo,
ich habe hier ein Gerät stehen, über das ich mit dem Browser kommunizieren kann. Unter anderem besteht die Möglichkeit Datenpakete die unterwegs sind mit zu verfolgen.
Dazu möchte ich in einem Programm mittels webrequest und Login auf "Data-Logging", im Browser zugreifen um mir die Daten, die sonst im Browser in einer List angezeigt werden, direkt bei mir im Programm zu sehen.
Die Login-Daten werden base64 "verschlüsselt" und die Eingabe von Username und Passwort erfolgt im Browser nicht direkt, sondern es ploppt zuvor eine Login-Form auf.
Mein bisheriger Code:
Jetzt schmeisst er mir bei:Dim dataStream AsStream = request.GetRequestStream()die Exception: ProtocolViolationException -> Inhaltsteil mit diesem Verbtyp kann nicht gesendet werden.
Mein gelesener Header:
Habe ich noch irgendetwas vergessen?
Gruß
/edit: Gelöst: Es muss :
request.Method =
WebRequestMethods.Http.Post
Anstatt "GET"
ich habe hier ein Gerät stehen, über das ich mit dem Browser kommunizieren kann. Unter anderem besteht die Möglichkeit Datenpakete die unterwegs sind mit zu verfolgen.
Dazu möchte ich in einem Programm mittels webrequest und Login auf "Data-Logging", im Browser zugreifen um mir die Daten, die sonst im Browser in einer List angezeigt werden, direkt bei mir im Programm zu sehen.
Die Login-Daten werden base64 "verschlüsselt" und die Eingabe von Username und Passwort erfolgt im Browser nicht direkt, sondern es ploppt zuvor eine Login-Form auf.
Mein bisheriger Code:
VB.NET-Quellcode
- Private Sub cmdLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLogin.ClickDim username As String = txtUserLogging.Text
- Dim password As String = txtPWLogging.Text
- If username <> "" And password <> "" ThenDim auth As String = "Basic " + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(username + ":" + password))
- 'CookieContainer und Request
- Dim cookieCon As New CookieContainerDim request As HttpWebRequest = DirectCast(HttpWebRequest.Create("http://" & cmbIP.Text & "/datalogging.htm"), HttpWebRequest)
- 'request.Method = "GET"
- 'request.ContentType = "text/html"
- request.CookieContainer = cookieCon
- request.PreAuthenticate = Truerequest.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested
- request.Headers.Add("Authorization", auth)
- request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0"
- 'Länge des InhaltsDim byteArr() As Byte = Encoding.Default.GetBytes(auth)
- request.ContentLength = byteArr.Length
- 'Daten in Stream schreiben und sendenDim dataStream As Stream = request.GetRequestStream()
- dataStream.Write(byteArr, 0, byteArr.Length)
- 'Server AntwortDim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
- 'Seitenquelltext auslesenDim reader As New StreamReader(response.GetResponseStream())Dim seitenQuelltext As String = reader.ReadToEnd()
- reader.Close()
- dataStream.Close()
- response.Close()
- 'Prüfen ob Login erfolgreich
- If seitenQuelltext.Contains("Show logged lines") ThenMessageBox.Show("Login successful!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning)
- ElseMessageBox.Show("Login failed!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning)
- End If
- ElseMessageBox.Show("Enter User and password!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning)
- End IfEnd Sub
Jetzt schmeisst er mir bei:Dim dataStream AsStream = request.GetRequestStream()die Exception: ProtocolViolationException -> Inhaltsteil mit diesem Verbtyp kann nicht gesendet werden.
Mein gelesener Header:
ichbineineip/datalogging.htm
GET /datalogging.htm HTTP/1.1
Host: ichbineineip
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: ichbineineip
Connection: keep-alive
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="device"
Content-Type: text/html
Transfer-Encoding: chunked
Server: Allegro-Software-RomPager/4.01
Connection: close
----------------------------------------------------------
http://ichbineineip/datalogging.htm
GET /datalogging.htm HTTP/1.1
Host: ichbineineip
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://ichbineineip/
Connection: keep-alive
Authorization: Basic kOmIsch3rC0d3==
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: private
Expires: Thu, 26 Oct 1995 00:00:00 GMT
Transfer-Encoding: chunked
Server: Allegro-Software-RomPager/4.01
Habe ich noch irgendetwas vergessen?
Gruß
/edit: Gelöst: Es muss :
request.Method =
WebRequestMethods.Http.Post
Anstatt "GET"
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TimeOut“ ()