Autor Beitrag
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 09.08.10 11:27 
Es steht eigentlich schon alles im Thread-Titel. Mit dem WebClient kann ich ohne Probleme einen GET-Query über die Eigenschaft QueryString an jeden Request anhängen. Aber ich möchte gern meine Daten grundsätzlich via POST senden.

Beispiel:

Der Benutzer kann eine Datei hochladen und optional die Beschreibung des Inhaltes dazu versenden.

Folgender Code funktioniert (zurechtgestutzt):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
using namespace System;
/*...*/
Net.WebClient webClient;
webClient = new Net.WebClient();
webClient.QueryString = "description=" + lblDescription.Text;
webClient.UploadFile("http://localhost/""C:\\Example.txt");

Ich versende den Query als GET und die Datei als POST. Ich möchte aber den Query abenfalls als POST versenden. Allerdings kann ich UploadValues() nicht in Kombination mit UploadFile() verwenden, da jeder Methodenaufruf einen eingenen Request darstellt.

Ich suche eine Lösungsanregung.

Danke,
Christian
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 09.08.10 18:44 
Das dürfte mit dem WebClient nicht zu schaffen sein: stackoverflow.com/qu...-multipart-form-data

_________________
>λ=
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 09.08.10 22:27 
Ich habe mir am Wochenende einen Client geschrieben, der den HttpWebRequest verwendet. Allerdings war ich noch gestern der Auffassung, dass ich mit diesem ebenso keinen POST Query versenden kann und bin dann erst auf WebClient gestoßen. Natürlich völliger Unsinn, denn der verwendet auch nur den HttpWebRequest.

Ich habe mich nochmal mit dem HTTP-Header auseinandergesetzt und aufgrund dieses Codes search.cpan.org/~gaa...TP/Request/Common.pm (letzter Post des Headers im Artikel) mir das Ganze hergeleitet und mit dem Stream des HttpWebRequest gearbeitet und den Header ergänzt. Wenn ich das Ganze soweit fertig habe - mir fehlt noch die Berechnung der Content-Length und Datei-Uploads laufen noch nicht korrekt - dann werde ich gerne die Klassen hier posten.

Danke für den Link, der sieht auch sehr gut aus. Eine wunderbare Ergänzung und Denklückenfüllung ...

Viele Grüße
Christian
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.09.10 08:46 
Ich habe mir inzwischen einen eigenen TCP-Client geschrieben, in dem ich diverse TCP basierende Requests verarbeiten lasse. Arbeitet asynchron und ist besser zu handhaben als die .NET Klassen.

Zusätzlich habe ich mich mit dem HTTP-Protokoll auseinandergesetzt. Also GET- und POST zu versenden sehe ich nicht mehr so problematisch.

Ok. Thread erledigt.