HttpWebRequest mit POST Daten (C#/CSharp)

Dieses CSharp (C#) Code Snippet zeigt, wie man einen HTTP Request mit POST Daten mit Hilfe der HttpWebRequest Klasse versendet. Die angegebene Methode erwartet als Parameter ein Dictionary mit den POST Parametern und sie gibt die Ergebnisseite als String zurück.

[...]

using System.Net;
using System.IO;
using System.Web;  // also add a reference to System.web.dll for HttpUtility class to be found

[...]


private string HttpPostRequest(string url, Dictionary<string,string> postParameters)
{
    string postData = "";

    foreach (string key in postParameters.Keys)
    {
        postData += HttpUtility.UrlEncode(key) + "="
              + HttpUtility.UrlEncode(postParameters[key]) + "&";
    }

    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    myHttpWebRequest.Method = "POST";

    byte[] data = Encoding.ASCII.GetBytes(postData);

    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
    myHttpWebRequest.ContentLength = data.Length;

    Stream requestStream = myHttpWebRequest.GetRequestStream();
    requestStream.Write(data, 0, data.Length);
    requestStream.Close();

    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

    Stream responseStream = myHttpWebResponse.GetResponseStream();

    StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);

    string pageContent = myStreamReader.ReadToEnd();

    myStreamReader.Close();
    responseStream.Close();

    myHttpWebResponse.Close();

    return pageContent;
}