Search code examples
c#httpwebrequest

How do I set an HTTP Web Request's body data?


I'm creating a web request in ASP.NET and I need to add a bunch of data to the body. How do I do that?

var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();

Solution

  • With HttpWebRequest.GetRequestStream

    Code example from http://msdn.microsoft.com/en-us/library/d4cek6cc.aspx

    string postData = "firstone=" + inputData;
    ASCIIEncoding encoding = new ASCIIEncoding ();
    byte[] byte1 = encoding.GetBytes (postData);
    
    // Set the content type of the data being posted.
    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
    
    // Set the content length of the string being posted.
    myHttpWebRequest.ContentLength = byte1.Length;
    
    Stream newStream = myHttpWebRequest.GetRequestStream ();
    
    newStream.Write (byte1, 0, byte1.Length);
    

    From one of my own code:

    var request = (HttpWebRequest)WebRequest.Create(uri);
    request.Credentials = this.credentials;
    request.Method = method;
    request.ContentType = "application/atom+xml;type=entry";
    using (Stream requestStream = request.GetRequestStream())
    using (var xmlWriter = XmlWriter.Create(requestStream, new XmlWriterSettings() { Indent = true, NewLineHandling = NewLineHandling.Entitize, }))
    {
        cmisAtomEntry.WriteXml(xmlWriter);
    }
    
    try 
    {    
        return (HttpWebResponse)request.GetResponse();  
    }
    catch (WebException wex)
    {
        var httpResponse = wex.Response as HttpWebResponse;
        if (httpResponse != null)
        {
            throw new ApplicationException(string.Format(
                "Remote server call {0} {1} resulted in a http error {2} {3}.",
                method,
                uri,
                httpResponse.StatusCode,
                httpResponse.StatusDescription), wex);
        }
        else
        {
            throw new ApplicationException(string.Format(
                "Remote server call {0} {1} resulted in an error.",
                method,
                uri), wex);
        }
    }
    catch (Exception)
    {
        throw;
    }