VisualBasic Webrequest/response mit vb.net

ML180

Lt. Junior Grade
Registriert
Jan. 2006
Beiträge
304
Moin,
folgende schnittestelle möchte ich mit vb.net 2010 ansprechen/beladen:

Auszug aus der API Beschreibung.
Collmex API: Überblick

Die verwendeten Datentypen basieren auf den CSV-Dateien, die auch für den interaktiven Upload verwendet werden.

Das Kommunikationsprotokoll richtet sich nach dem Internet-Standard RFC 2388 (POST multipart/form-data).

Es gibt nur genau ein Feld in dem Formular mit dem Feldnamen 'fileName'. In diesem Feld wird eine CSV-Datei übermittelt, welche die Daten für den Upload oder die Abfragen enthält. Das Ergebnis ist wieder eine CSV-Datei. In einer Datei können beliebig viele Satzarten enthalten sein. In einem Kommunikations-Schritt können Daten so unterschiedlicher Satzarten hoch geladen und abgefragt werden.

Die URL für den Datenaustausch ist: https://www.collmex.de/cgi-bin/cgi.exe?XXXXX,0,data_exchange wobei XXXXX die Kunden- bzw. Mandantennummer ist.

Beispiel für einen Datenaustausch mittels curl per Kommandozeile: curl -k -o download.csv -F fileName=@upload.csv https://www.collmex.de/cgi-bin/cgi.exe?XXXXX,0,data_exchange.

In PHP:

$ch = curl_init("https://www.collmex.de/cgi-bin/cgi.exe?XXXXX,0,data_exchange");
curl_setopt($ch, CURLOPT_POSTFIELDS, array('fileName'=>"@upload.csv"));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$message = curl_exec($ch);
echo curl_error($ch);
curl_close($ch);
echo str_replace("\r", "<br>", $message);

So steht es in der API Beschreibung, die gesamte Beschreibung findet man hier:
Gesamte API Beschreibung


Auf folgendem Stand bin ich jetzt.

Try
Dim fileName = "C:\collmex.csv"
Dim strQuerry As String = fileName
Dim strPage As String = "https://www.collmex.de/cgi-bin/cgi.exe?xxxxxx,0,data_exchange," & fileName
Dim wrq As System.Net.WebRequest = WebRequest.Create(strPage)
wrq.Method = "POST"

Dim bPayload() As Byte
bPayload = System.Text.Encoding.UTF8.GetBytes(strQuerry)
wrq.ContentLength = bPayload.Length

Dim reqStream As IO.Stream = wrq.GetRequestStream
reqStream.Write(bPayload, 0, bPayload.Length)

reqStream.Close()

Dim response As WebResponse = wrq.GetResponse()


Dim data As Stream = response.GetResponseStream

Dim dataStream As Stream = wrq.GetRequestStream()
dataStream = response.GetResponseStream()

' StreamReader erstellen um die Serverantwort in den Speicher einzulesen.
Dim reader As New StreamReader(dataStream)
' Antwort des Servers auslesen

Dim responseFromServer As String = reader.ReadToEnd()
' Antwort des Servers anzeigen
Console.WriteLine(responseFromServer)
MsgBox(responseFromServer)
response.Close()

Catch ex As Exception
MsgBox(ex.Message())
End Try

Als Response kommt:
MESSAGE;E;204009;Bitte Dateinamen angeben;0

Vielen Dank für eure Geduld und Hilfe!
 
Hi,

probier mal
wrq.Headers.Add("filename:"+filename)
 
Hi Gretzki,
habe ich eingefügt, leider nach wie vor die gleiche Fehlermeldung.
 
Zurück
Oben