How to send DELETE with JSON to the REST API using HttpClient

Tomasz Kowalczyk picture Tomasz Kowalczyk · Jan 20, 2015 · Viewed 32.1k times · Source

I have to send a delete command to a REST API service with JSON content using the HttpClient class and can't make this working.

API call:

DELETE /xxx/current
{
 "authentication_token": ""
}

because I can't add any content into below statement:

HttpResponseMessage response = client.DeleteAsync(requestUri).Result;

I know how to make this work with RestSharp:

var request = new RestRequest {
    Resource = "/xxx/current",
    Method = Method.DELETE,
    RequestFormat = DataFormat.Json
};

var jsonPayload = JsonConvert.SerializeObject(cancelDto, Formatting.Indented);

request.Parameters.Clear();
request.AddHeader("Content-type", "application/json");
request.AddHeader ("Accept", "application/json");
request.AddParameter ("application/json", jsonPayload, ParameterType.RequestBody);

var response = await client.ExecuteTaskAsync (request);

but I have get it done without RestSharp.

Answer

Farzan Hajian picture Farzan Hajian · Nov 12, 2015

Although it might be late to answer this question but I've faced a similar problem and the following code worked for me.

HttpRequestMessage request = new HttpRequestMessage
{
    Content = new StringContent("[YOUR JSON GOES HERE]", Encoding.UTF8, "application/json"),
    Method = HttpMethod.Delete,
    RequestUri = new Uri("[YOUR URL GOES HERE]")
};
await httpClient.SendAsync(request);