349 Stimmen

Wie postet man Daten an eine bestimmte URL mit WebClient in C#

Ich muss "HTTP Post" mit WebClient verwenden, um einige Daten an eine bestimmte URL zu senden, die ich habe.

Nun, ich weiß, dass dies mit WebRequest erreicht werden kann, aber aus einigen Gründen möchte ich stattdessen WebClient verwenden. Ist das möglich? Wenn ja, kann mir jemand ein Beispiel zeigen oder mich in die richtige Richtung weisen?

402voto

Desolator Punkte 21470

Ich habe gerade die Lösung gefunden und ja, es war einfacher als ich dachte :)

Hier ist also die Lösung:

string URI = "http://www.myurl.com/post.php";
string myParameters = "param1=value1&param2=value2&param3=value3";

using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string HtmlResult = wc.UploadString(URI, myParameters);
}

es funktioniert wie ein Zauber :)

379voto

Endy Tjahjono Punkte 23312

Es gibt eine eingebaute Methode namens UploadValues die HTTP POST (oder jede Art von HTTP-Methoden) senden kann UND den Aufbau des Anfragebodys (Verkettung von Parametern mit "&" und Escape-Zeichen durch Url-Kodierung) im richtigen Datenformat verarbeitet:

using(WebClient client = new WebClient())
{
    var reqparm = new System.Collections.Specialized.NameValueCollection();
    reqparm.Add("param1", "<any> kinds & of = ? strings");
    reqparm.Add("param2", "escaping is already handled");
    byte[] responsebytes = client.UploadValues("http://localhost", "POST", reqparm);
    string responsebody = Encoding.UTF8.GetString(responsebytes);
}

43voto

Pranay Rana Punkte 170480

Verwendung von WebClient.UploadString o WebClient.UploadData können Sie problemlos Daten an den Server POSTen. Ich zeige ein Beispiel mit UploadData, da UploadString auf dieselbe Weise wie DownloadString verwendet wird.

byte[] bret = client.UploadData("http://www.website.com/post.php", "POST",
                System.Text.Encoding.ASCII.GetBytes("field1=value1&amp;field2=value2") );

string sret = System.Text.Encoding.ASCII.GetString(bret);

Mehr: http://www.daveamenta.com/2008-05/c-webclient-usage/

28voto

Andrew Punkte 7341
string URI = "site.com/mail.php";
using (WebClient client = new WebClient())
{
    System.Collections.Specialized.NameValueCollection postData = 
        new System.Collections.Specialized.NameValueCollection()
       {
              { "to", emailTo },  
              { "subject", currentSubject },
              { "body", currentBody }
       };
    string pagesource = Encoding.UTF8.GetString(client.UploadValues(URI, postData));
}

23voto

TeJ Punkte 450
//Making a POST request using WebClient.
Function()
{    
  WebClient wc = new WebClient();

  var URI = new Uri("http://your_uri_goes_here");

  //If any encoding is needed.
  wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
  //Or any other encoding type.

  //If any key needed

  wc.Headers["KEY"] = "Your_Key_Goes_Here";

  wc.UploadStringCompleted += 
      new UploadStringCompletedEventHandler(wc_UploadStringCompleted);

  wc.UploadStringAsync(URI,"POST","Data_To_Be_sent");    
}

void wc__UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)    
{  
  try            
  {          
     MessageBox.Show(e.Result); 
     //e.result fetches you the response against your POST request.         
  }
  catch(Exception exc)         
  {             
     MessageBox.Show(exc.ToString());            
  }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X