130

Here is my class so far:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Web;
using System.Net;
using System.IO;

public class MyClass
    {
        private const string URL = "https://sub.domain.com/objects.json?api_key=123";
        private const string data = @"{""object"":{""name"":""Title""}}";

        public static void CreateObject()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = data.Length;
            StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
            requestWriter.Write(data);
            requestWriter.Close();

            try
            {
                // get the response
                WebResponse webResponse = request.GetResponse();
                Stream webStream = webResponse.GetResponseStream();
                StreamReader responseReader = new StreamReader(webStream);
                string response = responseReader.ReadToEnd();
                responseReader.Close();
            }
            catch (WebException we)
            {
                string webExceptionMessage = we.Message;
            }
            catch (Exception ex)
            {
                // no need to do anything special here....
            }
        }

        static void Main(string[] args)
        {
            MyClass.CreateObject();
        }
}

When I do csc filename.cs, I get the following error:

The type or namespace name 'Http' does not exist in the namespace 'System.Net' (are you missing an assembly reference?)

I'm using .NET 4.5

1
  • You're trying to access a non-static field from a static method (the webClient field). Also, you never actually use it for anything. You could probably just remove it. Commented Mar 8, 2012 at 0:37

16 Answers 16

134

HttpClient lives in the System.Net.Http namespace.

You'll need to add:

using System.Net.Http;

And make sure you are referencing System.Net.Http.dll in .NET 4.5.


The code posted doesn't appear to do anything with webClient. Is there something wrong with the code that is actually compiling using HttpWebRequest?


Update

To open the Add Reference dialog right-click on your project in Solution Explorer and select Add Reference.... It should look something like:

enter image description here

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

9 Comments

I just installed .NET 4.5, and it says namespace name 'Http' does not exist in the namespace 'System.Net'
Are you sure your project is targeting .NET 4.5 and that you've added the reference to System.Net.Http.dll?
Um... no it won't. Right click on your project in Solution Explorer and click Add References when the dialog appears, select the left most tab (I don't use the built-in references dialog but mine is called Assemblies). Scroll the list until you see an item called System.Net.Http double-click it and rebuild.
Certainly. Here's some documentation from MSDN for doing it. Let me know if you run into any troubles.
Are you working in a solution with multiple projects? Are you sure that the System.Net.Http assembly is installed in the project which contains the file you're looking at? You can adjust which projects load which nuget packages in the Package Manager
|
108

NuGet > Microsoft.AspNet.WebApi.Client package

4 Comments

This pretty much solved the problem for me. I installed this package: nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2
The accepted answer (adding a reference) didn't help me but this did. Thanks.
This is the correct approach to take. Adding a reference to a dll could pose issues on a build server. Having the correct nuget package will solve the issue.
Any ideas why this is not shipped with net framework like other system DLLs?
18

How I solved it.

  1. Open project (!) "Properties", choose "Application", select targeting framework ".Net Framework 4.5"
  2. Right click on your project -> Add reference
  3. Make sure that in "Assemblies" -> "Extensions" option "System.Net.Http" is unchecked
  4. Go to "Assemblies" -> "Framework" and select "System.Net.Http" and "System.Net.Http" options
  5. That`s all!

In my case i had at the beginning .Net 4.0 and "Assemblies" -> "Extensions" option "System.Net.Http" with version 2.0.0.0. After my actions "Assemblies" -> "Framework" options "System.Net.Http" and "System.Net.Http" had the same 4.0.0.0 version.

1 Comment

that was the problem for me as well, it was not showing Reference "System.Net.Http" until I upgraded from .NET 3.5 to .NET 4.5
11

Visual Studio Package Manager Console > Install-Package Microsoft.AspNet.WebApi.Client

Comments

7

just go to add reference then add

system.net.http

enter image description here

Comments

6

Assuming that your using Visual Studio 10, you can download an install that includes System.Net.Http, for Visual Studio 10 here: download MVC4 for VS10

Once you've installed it, right click on the References folder in the VS Project and then select Add Reference. Then, select the Browse tab. Navigate to the assemblies install path for the MVC4 install (usually in Program Files(x86)/Microsoft ASP.NET/ASP.NET MVC4/assemblies) and select the assembly named 'System.Net.Http.dll'. Now you can add your 'using System.Net.Http' at the top of your code and begin creating HttpClient connections.

Comments

6

I had this issue after upgrading to .NET Framework 4.7.2. I found out that Nuget package for System.Net.Http is no longer recommended. Here are workarounds:

Comments

3

You need to have a Reference to the System.Web.Http assembly which has the HTTPClient class, your trying to use. Try adding the below line before your class declaration

using System.Web.Http;

If you still get the Error, try doing this in Visual Studio

  1. Right click on the References folder on your project.
  2. Select Add Reference.
  3. Select the .NET tab (or select the Browse button if it is not a .NET Framework assembly).
  4. Double-click the assembly containing the namespace in the error message (System.Web.Http.dll).
  5. Press the OK button.

5 Comments

@TheLindyHop: can you try following the steps in the updated answer?
@Akhil - HttpClient belongs to the System.Web.Http.dll .NET 4.5 assembly (not System.Net).
How do I get the references folder to show up? I've started with just a file: outside of any project =\
ok, right Click on your Project, and select Properties. You should see References on the left hand side.
@TheLindyHop - Follow the directions in my comment. It is similar but slightly more detailed.
3

You'll need a using System.Net.Http at the top.

Comments

3

For me, it was getting the nuget package Microsoft.Net.Http .(https://blogs.msdn.microsoft.com/bclteam/p/httpclient/)

Comments

3

With the Nuget Package Manager install Microsoft.AspNet.WebApi.Core.

After this:

using System.Web.Http;

or if you use VB

imports System.Web.Http

Comments

2

HttpClient is new in .net 4.5. You should probably be using HttpWebRequest.

4 Comments

The code included in the question already uses HttpWebRequest, not sure why they aren't using it though.
Agreed. The HTTPClient is being declared, but never being used. Very odd.
I'me having an issue including the namespace for it. using System.Net.Http; yeilds the error 'Http' does not exist in the namespace 'System.Net'
Are you sure you're using the .Net 4.5 compiler?
0

To solve the problem :

  1. Go to your solution explorer.
  2. Right click on the project name and choose add
  3. Select references and allow the .Net framework 4.5 to finish loading
  4. Scroll down and select System.Net.Http and click ok.

Problem solved.

Comments

0

Making the "Copy Local" property True for the reference did it for me. Expand References, right-click on System.Net.Http and change the value of Copy Local property to True in the properties window. I'm using VS2019.

Comments

0

See CS0234 'Http' does not exist in the namespace 'System.Net' when targeting .NET Fx 4.x with implicit usings.

I fixed it by installing the nuget package "System.Net.Http"

Comments

-1

In Visual Studio you can use nuget to load the package

Microsoft.AspNet.WebApi.WebHost

Comments

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.