Set a body for WebClient when making a Post Request

28,615

You can do with this simple code

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

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

Remember that you can use UploadStringTaskAsync if you want to be async

Share:
28,615
Ivan S
Author by

Ivan S

Updated on July 09, 2022

Comments

  • Ivan S
    Ivan S almost 2 years

    So I have an api that I want to call to. The first call is an ahoy call and in the body of the request I need to send the ship_type, piratename and my piratepass. I then want to read the response which has my treasure booty that i will use for later.

    I'm able to do this with web request. but i feel like there is a better way to do it with webclient.

    (way I currently do it 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...
            }
    

    Thanks in advance either way.