12

I am separating some code out of a website and after copying the code behind for the particular page in question, I'm getting an error on the PostAsJsonAsync() line of code:

HttpResponseMessage response = await client.PostAsJsonAsync("api/...", user);

which is in this using statement (added headers as well)

        using System;
        using System.Net.Http;
        using System.Net.Http.Headers;
        using System.Net.Mail;
        using System.Threading.Tasks;
        //...

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("WebServiceAddress");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.PostAsJsonAsync("api/...", user);
            if (response.IsSuccessStatusCode)
            {
                const string result = "Thank you for your submission.";
                return result;
            }
            //...
        }

The error I get says

 Error  4   'System.Net.Http.HttpClient'
 does not contain a definition for 'PostAsJsonAsync' and no extension
 method 'PostAsJsonAsync' accepting a first argument of type 'System.Net.Http.HttpClient'
 could be found (are you missing a using directive or an assembly reference?)

even though it works in the former project and was copied straight over from that project in its entirety. Did I forget to add something?

I appreciate any help on the matter.

3 Answers 3

29

You will have to add following dependency,

System.Net.Http.Formatting.dll

It should be there in extensions -> assembly.

or

You can add Microsoft.AspNet.WebApi.Client nuget package

Sign up to request clarification or add additional context in comments.

1 Comment

Bingo. I'll mark this as the answer as soon as it allows me.
3

I wrote my own extension method as I believe that method is only for older .NET api, and used Newtonsoft JSON serializer:

// Extension method to post a JSON
public static async Task<HttpResponseMessage> PostAsJsonAsync(this HttpClient client, string addr, object obj)
{
    var response = await client.PostAsync(addr, new StringContent(
            Newtonsoft.Json.JsonConvert.SerializeObject(obj),
            Encoding.UTF8, "application/json"));

    return response;
}

Comments

0

I had the same error, even with the respective Nuget package installed. What helped me is just this using statement:

using System.Net.Http;

1 Comment

For me the package worked only after reinstall, however, this using statement is already in answer, so this is not an answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.