2016-04-19 3 views
2

So habe ich eine API, die ich anrufen möchte. Der erste Anruf ist ein Ahoy-Anruf und in dem Körper der Anfrage muss ich den ship_type, den Piratennamen und meinen Piratenpass schicken. Ich möchte dann die Antwort lesen, die meine Schatzbeute hat, die ich für später verwenden werde.Stellen Sie einen Körper für WebClient ein, wenn Sie eine Post-Anfrage machen

Ich bin in der Lage, dies mit Web-Anfrage zu tun. aber ich habe das Gefühl, dass es einen besseren Weg gibt, es mit Webclient zu tun.

(so wie ich es zur Zeit in webrequest)

 //Credentials for the Pirate api 
     string piratename = "IvanTheTerrible"; 
     string piratepass= "YARRRRRRRR"; 

     string URI = "https://www.PiratesSuperSecretHQ.com/sandyShores/api/respectmyauthority"; 

     WebRequest wr = WebRequest.Create(URI); 

     wr.Method = "POST"; 
     wr.ContentType = "application/x-www-form-urlencoded"; 

     string bodyData = "ship_type=BattleCruiser&piratename=" + piratename + "&piratepass=" + piratepass; 

     ASCIIEncoding encoder = new ASCIIEncoding(); 

     byte[] byte1 = encoder.GetBytes(bodyData); 

     wr.ContentLength = byte1.Length; 
     //writes the body to the request 
     Stream newStream = wr.GetRequestStream(); 

     newStream.Write(byte1, 0, byte1.Length); 
     newStream.Close();    

     WebResponse wrep = wr.GetResponse(); 

     string result; 

     using (var reader = new StreamReader(wrep.GetResponseStream())) 
     { 
      result = reader.ReadToEnd(); // do something fun... 
     } 

Vielen Dank im Voraus oder so.

+1

sein wollen Haben Sie versucht WebClient.UploadString (URI, bodyData) – Rajesh

+0

Nun .. ich mit fühle mich dumm ... Ich dachte, ich würde einen Fehler bekommen, als ich dachte, dass es als Parameter/Abfrage-String hinzugefügt wurde. Das funktioniert aber ... –

+0

Verwenden Sie System.Net.HttpClient – lgoncalves

Antwort

4

Mit diesem einfachen Code tun können

Uri uri = new Uri("yourUri"); 
string data = "yourData"; 

WebClient client = new WebClient(); 
var result = client.UploadString(uri, data); 

Denken Sie daran, dass Sie UploadStringTaskAsync verwenden können, wenn Sie async