Hallo zusammen,
ich versuche über HttpWebRequest eine Datei zu downloaden. Darüber habe ich sehr viel im Internet gefunden und auch schon sehr viel ausprobiert aber entweder erhalte ich eine Datei die nicht mit Excel lesbar ist oder leer ist. Ich vermute das es an dem Stream liegt aber da ich auch nur Anfänger bin, komme ich nicht weiter...
Hier nur ein Ausschnitt von dem was ich bisher probiert habe:
Nur ergänzend, ich habe das ganze schon mit Powershell zum laufen bekommen aber hier gehts nicht um Powershell. Ich wollte damit nur sagen, ich bin sicher das es eine XLS Datei ist.
INVOKE-RestMethod -Method GET -Header $Header -ContentType "*/*" -uri "http://srv-vm-n:8180/api/document/1" -OutFile D:\Eco.xls
ich versuche über HttpWebRequest eine Datei zu downloaden. Darüber habe ich sehr viel im Internet gefunden und auch schon sehr viel ausprobiert aber entweder erhalte ich eine Datei die nicht mit Excel lesbar ist oder leer ist. Ich vermute das es an dem Stream liegt aber da ich auch nur Anfänger bin, komme ich nicht weiter...
Hier nur ein Ausschnitt von dem was ich bisher probiert habe:
VB.NET-Quellcode
- Private Function Download1()
- Dim user As String = "user"
- Dim pass As String = "pass"
- Dim bpass As Byte() = Encoding.Default.GetBytes(user & ":" & pass)
- Dim basic As String = Convert.ToBase64String(bpass)
- Dim url As String = "http://srv-vm-n:8180/api/document/1"
- Dim request As HttpWebRequest = HttpWebRequest.Create(url)
- 'System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
- 'ServicePointManager.ServerCertificateValidationCallback = Function(sender, cert, chain, sllPolicyErrors) True
- request.Proxy = Nothing
- request.Method = "GET"
- request.PreAuthenticate = True
- request.Headers.Add(HttpRequestHeader.Authorization, "Basic " & basic)
- request.ContentType = "*/*"
- Dim response As HttpWebResponse = request.GetResponse
- Dim Stream As System.IO.Stream = response.GetResponseStream
- Dim StreamReader As New System.IO.StreamReader(Stream)
- Dim Data As String = StreamReader.ReadToEnd
- '############################################
- 'Hier erhalte ich eine Datei mit Inhalt aber Excel kann damit nichts anfangen, auch verschiedene Encodings haben nicht geholfen
- IO.File.WriteAllText("d:\eco.xls", Data)
- '############################################
- 'Hier erhalte ich ebenso eine leere Datei
- Dim length As Double = response.ContentLength
- Dim writeStream As New IO.FileStream("d:\eco1.xls", IO.FileMode.Create)
- Dim nRead As Integer
- Dim readBytes(4095) As Byte
- Dim bytesread As Integer = response.GetResponseStream.Read(readBytes, 0, 4096)
- Do Until bytesread = 0
- nRead += bytesread
- writeStream.Write(readBytes, 0, bytesread)
- bytesread = response.GetResponseStream.Read(readBytes, 0, 4096)
- Loop
- 'Close the streams
- response.GetResponseStream.Close()
- writeStream.Close()
- '############################################
- 'Hier erhalte ich eine leere Datei
- Dim bytesProcessed As Integer = 0
- Dim remoteStream As Stream
- Dim localStream As Stream
- If Not response Is Nothing Then
- remoteStream = response.GetResponseStream()
- localStream = File.Create("d:\eco4.xls")
- 'Declare buffer as byte array
- Dim myBuffer As Byte()
- 'Byte array initialization
- ReDim myBuffer(1024)
- Dim bytesRead1 As Integer
- bytesRead1 = remoteStream.Read(myBuffer, 0, 1024)
- Do While (bytesRead1 > 0)
- localStream.Write(myBuffer, 0, bytesRead1)
- bytesProcessed += bytesRead1
- bytesRead1 = remoteStream.Read(myBuffer, 0, 1024)
- Loop
- localStream.Close()
- End If
- Return Data
- End Function
Nur ergänzend, ich habe das ganze schon mit Powershell zum laufen bekommen aber hier gehts nicht um Powershell. Ich wollte damit nur sagen, ich bin sicher das es eine XLS Datei ist.
INVOKE-RestMethod -Method GET -Header $Header -ContentType "*/*" -uri "http://srv-vm-n:8180/api/document/1" -OutFile D:\Eco.xls