Search code examples
c#windows-phonemultipartform-datadotnet-httpclient

How to get response body from httpclient c# when doing multipart


I am trying to post multipart data using System.Net.Http.HttpClient, the obtained response is 200 ok.

Here is the Method I used:

 public async Task postMultipart()
        {
            var client = new HttpClient();
            client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "multipart/form-data");


            // This is the postdata
            MultipartFormDataContent content = new MultipartFormDataContent( );
            content.Add(new StringContent("12", Encoding.UTF8), "userId");
            content.Add(new StringContent("78", Encoding.UTF8), "noOfAttendees");
            content.Add(new StringContent("chennai", Encoding.UTF8), "locationName");
            content.Add(new StringContent("32.56", Encoding.UTF8), "longitude");
            content.Add(new StringContent("32.56", Encoding.UTF8), "latitude");

            Console.Write(content);
            // upload the file sending the form info and ensure a result.
            // it will throw an exception if the service doesn't return a valid successful status code
            await client.PostAsync(fileUploadUrl, content)
                .ContinueWith((postTask) =>
                {
                    postTask.Result.EnsureSuccessStatusCode();
                });

        }
  • How to obtain the response body from this method?

Solution

  • To echo Jon (one does not simply disagree with Jon), do not mix the async/await world with the pre-async/await (ContinueWith) world.

    To get the response body as a string you need a 2nd await:

    var response = await client.PostAsync(fileUploadUrl, content);
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();