43

There is StringContent class in System.Net.Http namespace. What purposes should I use class StringContent for?

3
  • 1
    You can read the methods.
    – gdoron
    Commented Oct 20, 2013 at 15:30
  • 3
    Do not care about it. If you come across another type in the System.Net.Http namespace which uses the StringContent type, then you will also know what its purpose is....
    – user2819245
    Commented Oct 20, 2013 at 15:34
  • see also Can't find how to use HttpContent Commented Jul 21, 2016 at 6:19

4 Answers 4

30

StringContent class creates a formatted text appropriate for the http server/client communication. After a client request, a server will respond with a HttpResponseMessageand that response will need a content, that can be created with the StringContent class.

Example:

 string csv = "content here";
 var response = new HttpResponseMessage();
 response.Content = new StringContent(csv, Encoding.UTF8, "text/csv");
 response.Content.Headers.Add("Content-Disposition", 
                              "attachment; 
                              filename=yourname.csv");
 return response;

In this example, the server will respond with the content present on the csv variable.

22

It provides HTTP content based on a string.

Example:

Adding the content on HTTPResponseMessage Object

response.Content = new StringContent("Place response text here");
6
  • 1
    Could you give me example of using? Commented Oct 20, 2013 at 15:30
  • @oblomov: Provided an example Commented Oct 20, 2013 at 15:33
  • 3
    @SivaCharan what is its purpose? When would one use this? Commented Aug 20, 2014 at 20:50
  • I guess StringContent does not support escape characters like \r\n. I am passing those characters in my string, but for some reason it fails @SivaCharan
    – aMazing
    Commented Oct 1, 2014 at 20:58
  • 1
    @simone, not sure if this would have helped you in 2015 but it finally produced the content for me -- note the addition of "await" was of critical importance for me: Console.WriteLine("Content is: " + await CustomerProfileJsonContent.ReadAsStringAsync());
    – Zeek2
    Commented Apr 29 at 13:34
10

Whenever I want to send an object to web api server I use StringContent to add format to HTTP content, for example to add Customer object as json to server:

 public void AddCustomer(Customer customer)
    {
        String apiUrl = "Web api Address";
        HttpClient _client= new HttpClient();

        string JsonCustomer = JsonConvert.SerializeObject(customer);
        StringContent content = new StringContent(JsonCustomer, Encoding.UTF8, "application/json");
        var response = _client.PostAsync(apiUrl, content).Result;

    }
2
  • It is best practice to not create a new HttpClient for every request :)
    – Nora
    Commented Mar 22, 2023 at 13:02
  • @Nora yeah httpfactory nowadays is so sexy and fun!
    – Shojaeddin
    Commented Mar 22, 2023 at 16:01
4

Every response that is basically text encoded can be represented as StringContent.

Html reponse is text too (with proper content type set):

response.Content = new StringContent("<html><head>...</head><body>....</body></html>")

On the other side, if you download/upload file, that is binary content, so it cannot be represented by string.

Not the answer you're looking for? Browse other questions tagged or ask your own question.