Hej zusammen!
Ich versuche gerade einen HttpWebRequest auszuführen bei dem ich eine xml Datei mit sende.
Bei Postman funktioniert der Request wunderbar wenn ich im Body "form-data" wähle als Key xmlRequest eingebe (ein anderer Name führt zum Fehler) und dann die xml Datei auswähle die ich senden möchte.
Das heißt, ich muss es in vb dann irgendwie so hinbekommen, dass ich da den Body entsprechend benenne. Leider komme ich da absolut nicht weiter. Muss ich die XML Datei selber modifizieren? Oder kann man irgendwie einen Namen/Header mit senden?
Hier mein Code:
Herzlichen Dank bereits jetzt
Ich versuche gerade einen HttpWebRequest auszuführen bei dem ich eine xml Datei mit sende.
Bei Postman funktioniert der Request wunderbar wenn ich im Body "form-data" wähle als Key xmlRequest eingebe (ein anderer Name führt zum Fehler) und dann die xml Datei auswähle die ich senden möchte.
Das heißt, ich muss es in vb dann irgendwie so hinbekommen, dass ich da den Body entsprechend benenne. Leider komme ich da absolut nicht weiter. Muss ich die XML Datei selber modifizieren? Oder kann man irgendwie einen Namen/Header mit senden?
Hier mein Code:
VB.NET-Quellcode
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Try
- #Region "Variables"
- Dim HTTP_Request As HttpWebRequest
- Dim HTTP_Response As WebResponse
- Dim HTTP_Method As String = "POST"
- Dim RequestPfad = "https://199.0.0.3/api"
- Dim boundary As String = "----------------------------------------AaB03x"
- Dim postfileHeader = boundary & vbCrLf & "Content-Disposition: form data; name = ""xmLRequest""; " &
- "filename= """ & "xmlRequest.xml" & """" & vbCrLf &
- "Content-Type: text/xml" & vbCrLf & vbCrLf
- #End Region
- #Region "Request - Certificates"
- ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf AcceptCert)
- ServicePointManager.Expect100Continue = True
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
- #End Region
- #Region "Request"
- HTTP_Request = WebRequest.Create(RequestPfad)
- HTTP_Request.Method = "POST"
- HTTP_Request.ContentType = "multipart/form-data"
- HTTP_Request.Accept = "text/xml"
- HTTP_Request.Headers.Add(HttpRequestHeader.Authorization, "Basic XXXX")
- #End Region
- #Region "POST"
- Dim stream As Stream = HTTP_Request.GetRequestStream()
- Dim parameters As String = System.IO.File.ReadAllText("xmlRequest.xml").ToString
- Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(parameters)
- stream.Write(buffer, 0, buffer.Length)
- #End Region
- #Region "Create File"
- Dim remoteStream As Stream
- Dim localStream As Stream
- Dim bytesRead As Integer
- Dim bytesProcessed As Integer = 0
- HTTP_Response = HTTP_Request.GetResponse()
- remoteStream = HTTP_Response.GetResponseStream()
- If Not System.IO.Directory.Exists(Application.CommonAppDataPath & "\test\") Then
- System.IO.Directory.CreateDirectory(Application.CommonAppDataPath & "\test\")
- End If
- localStream = File.Create(Application.CommonAppDataPath & "\test\" & "tempfile.tmp")
- Do
- bytesRead = remoteStream.Read(buffer, 0, buffer.Length)
- localStream.Write(buffer, 0, bytesRead)
- bytesProcessed += bytesRead
- Loop While bytesRead > 0
- localStream.Flush()
- localStream.Close()
- #End Region
- #Region "Response"
- Try
- HTTP_Response = HTTP_Request.GetResponse
- Dim StreamResponseRead As Stream = HTTP_Response.GetResponseStream
- Dim ResponseRead As StreamReader = New StreamReader(StreamResponseRead, Encoding.UTF8)
- Response_String = ResponseRead.ReadToEnd.ToString
- StreamResponseRead.Close()
- Catch ex As Net.WebException
- If ex.Response IsNot Nothing Then
- Dim sr As New StreamReader(ex.Response.GetResponseStream())
- MsgBox(sr.ReadToEnd.ToString)
- End If
- End Try
- #End Region
- MsgBox("OK")
- Catch ex As Exception
- MsgBox(ex.ToString)
- End Try
- End Sub
Herzlichen Dank bereits jetzt