VB.net Datei beim Download über Socket durch 5 wiederkehrende Zeichen beschädigt
Hallo Community,
ich hoffe ihr könnt mir bei meinem Problem helfen:
ich versuche einen Stream per Socket von einem WebServer herunterzuladen.
Die Daten des Streams kommen auch an, jedoch ist die heruntergeladene Datei
unbrauchbar weil 5 Zeichen (z.B. 3e8 + crlf) in verschiedenen Teilen des Streams
angefügt werden, die da nicht hingehören ...
Komischerweise ist das nicht bei allen Servern der Fall ...
vielleicht ist das auch in irgendeiner Spezifikation beschrieben
dass die ersten Teile des Streams zusätzliche Informationen enthalten ??
Der Source für den Empfang der Daten:
Der Response-Header im Webbrowser (bei dem die Datei richtig ankommt) lautet:
Ich hoffe Ihr habt eine Idee woran es liegen könnte ...
ich hoffe ihr könnt mir bei meinem Problem helfen:
ich versuche einen Stream per Socket von einem WebServer herunterzuladen.
Die Daten des Streams kommen auch an, jedoch ist die heruntergeladene Datei
unbrauchbar weil 5 Zeichen (z.B. 3e8 + crlf) in verschiedenen Teilen des Streams
angefügt werden, die da nicht hingehören ...
Komischerweise ist das nicht bei allen Servern der Fall ...
vielleicht ist das auch in irgendeiner Spezifikation beschrieben
dass die ersten Teile des Streams zusätzliche Informationen enthalten ??
Der Source für den Empfang der Daten:
Sub Start()
Dim IP As IPAddress
Dim URL2 As String = RegularExpressions.Regex.Match(_URLStart, "(http|https)://(.*?)(:[0-9])?/").Groups(2).Value
Dim PORT As String = RegularExpressions.Regex.Match(_URLStart, "(http|https)://(.*?)(:[0-9])?/").Groups(3).Value
IP = IPAddress.Parse(URL2) : If PORT = "" Then PORT = 80
Dim IPEP As IPEndPoint = New IPEndPoint(IP, PORT)
_Sock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
_Sock.Connect(IPEP) : Thread.Sleep(50) : If _Sock.Connected = False Then Exit Sub
_Sock.ReceiveTimeout = 60000 : _Sock.SendTimeout = 1000
Dim Header As New StringBuilder
Header.AppendLine("GET " & Mid(_URLStart, InStr(_URLStart, IP.ToString) + IP.ToString.Length) & " HTTP/1.1")
Header.AppendLine("Host: " & IP.ToString)
Header.AppendLine("Connection: keep-alive")
Header.AppendLine() : _Sock.Send(Encoding.UTF8.GetBytes(Header.ToString))
Do Until _Sock.Connected = False
Dim B(_Sock.Available - 1) As Byte : _Sock.Receive(B)
_MS.Write(B, 0, B.Length) : Thread.Sleep(50)
Loop
End Sub
Der Response-Header im Webbrowser (bei dem die Datei richtig ankommt) lautet:
HTTP/1.1 200 OK
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-type: application/octet-stream
Date: Thu, 03 May 2018 19:42:06 GMT
Keep-Alive: timeout=60, max=300
Content-Disposition: attachment; filename=export.ext
Ich hoffe Ihr habt eine Idee woran es liegen könnte ...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 372906
Url: https://administrator.de/contentid/372906
Ausgedruckt am: 20.11.2024 um 00:11 Uhr
1 Kommentar