HttpWebRequest (POST) über C#
-
Guten Abend Leute,
ich hab mal wieder eine Frage bezüglich der HttpWebRequest Methode
Post. Ich möchte in einen Texteditor, einen Postrequest durchführen undzwar
auf folgende Seite.Mir fällt in meinem Code eigentlich kein Fehler auf,
laufen tut er auch allerdings bekomm ich per Exception
einen Fehlermeldung des Remoteservers zurückgeliefert.HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://pastebin.com/api_public.php"); request.Method = "POST"; request.ContentLength = richTextBox.Text.Length; try { Stream sendStream = request.GetRequestStream(); Byte[] data = System.Text.Encoding.ASCII.GetBytes(richTextBox.Text); sendStream.Write(data, 0, richTextBox.Text.Length); sendStream.Close(); } catch { /* Nicht notwendig (vorerst) */ } WebResponse response = request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); MessageBox.Show(reader.ReadToEnd()); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.ASCII); sr.Close();
Gut nun werden sich viele die Pastebin DEV Api durchlesen und mich darauf
aufmerksam machen, das ich keine Parameter verwende. Da liegt nämlich der Punkt.
Ich kenne den POST Request bisher nur von PHP und anderen Webprogrammiersprachen
deshalb meine Frage(n).1. Wie führe obigen POST Request mit Parametern durch ?
2. Wie erhalte ich vom Remoteserver Antwort (passen meine Streams so) ?Danke im voraus
- ein müder Jason :p
-
Jason_Gregory schrieb:
Mir fällt in meinem Code eigentlich kein Fehler auf,
laufen tut er auch allerdings bekomm ich per Exception
einen Fehlermeldung des Remoteservers zurückgeliefert.Und diese lautet wie? *Die Nasen-Fehlerzangen holen geht*
Jason_Gregory schrieb:
Gut nun werden sich viele die Pastebin DEV Api durchlesen und mich darauf aufmerksam machen, das ich keine Parameter verwende.
Was aber kaum eine Exception auslösen wird.
Jason_Gregory schrieb:
1. Wie führe obigen POST Request mit Parametern durch ?
Wie wäre es mit einer Suchmaschine? Oder kurz im RFC das Vorgehen durchlesen?
http://ecosia.org/search.php?q=HTTP+POST+Parameters
Man findet die Lösung sogar auf Wikipedia. Noch schlimmer, direkt in der MSDN:
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.method.aspx
(Das Beispiel kommt mehrmals vor!)Jason_Gregory schrieb:
2. Wie erhalte ich vom Remoteserver Antwort (passen meine Streams so) ?
Du solltest zwei Dinge beachten:
1. Schick dem Server mit, welches Encoding du verwendest. Dies geht über den MIME-Type.
http://tools.ietf.org/html/rfc2616#page-21 (ganz unten von der Seite 21)
2. Wenn du empfängst, solltest du auslesen, was für ein Encoding dir der Server geschickt hat. Geht wieder über den MIME-Type.Ansonsten frage ich mich höchstens noch, was dieser zweite StreamReader dort zu suchen hat? Wieso rufst du nicht
Close
auf dem ersten auf?Grüssli
-
Mahlzeit,
danke für die Ergebnisse ich wusste nicht so recht nach was ich
suchen sollte, mir wurde bei Google nur unsinniges Zeugs
zurückgeliefert (lag vielleicht an meiner Suchanfrage).
Um auf den Fehler zurückzukommen.
Der Remoteserver hat einen Fehler zurückgegeben: (417) Unknown.
Werde mir mal die angegebenen Links durchlesen, ein Danke im voraus.
-
Versuchs mal mit dem WebClient:
NameValueCollection nvc = new NameValueCollection(); nvc["paste_code"]="Blupp!"; using(WebClient wc = new WebClient()) { wc.Proxy = null; wc.Encoding=Encoding.Default; wc.UploadValues("paste_code", nvc); }
(ungetestet!)