There is StringContent class in System.Net.Http namespace. What purposes should I use class StringContent for?
- 
                    1You can read the methods. – gdoron Oct 20 '13 at 15:30
- 
                    3Do 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.... – Oct 20 '13 at 15:34
- 
                    see also [Can't find how to use HttpContent](http://stackoverflow.com/a/21879362) – Michael Freidgeim Jul 21 '16 at 06:19
4 Answers
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. 
It provides HTTP content based on a string.
Example:
Adding the content on HTTPResponseMessage Object
response.Content = new StringContent("Place response text here");
 
    
    - 17,940
- 9
- 60
- 95
- 
                    
- 
                    
- 
                    1
- 
                    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 Oct 01 '14 at 20:58
- 
                    
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;
    }
 
    
    - 1,851
- 1
- 18
- 16
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.
 
    
    - 24,809
- 11
- 75
- 93
 
     
    