web-dev-qa-db-fra.com

System.Net.Http: manquant dans l'espace de noms? (en utilisant .net 4.5)

TL; DR: Je suis nouveau dans cette langue et n'ai aucune idée de ce que je fais

voici ma classe jusqu'à présent:

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();
        }
}

quand je fais csc filename.cs, j'obtiens l'erreur suivante:

Le type ou le nom d'espace de noms 'Http' n'existe pas dans l'espace de noms 'System.Net' (il manque une référence d'assembly?)

86
NullVoxPopuli

HttpClient habite le System.Net.Http espace de noms.

Vous devrez ajouter:

using System.Net.Http;

Et assurez-vous de référencer System.Net.Http.dll dans .NET 4.5.


Le code posté ne semble rien faire avec webClient. Y at-il quelque chose qui cloche dans le code qui compile réellement avec HttpWebRequest?


Mettre à jour

Pour ouvrir la boîte de dialogue Ajouter une référence, cliquez avec le bouton droit sur votre projet dans Explorateur de solutions et sélectionnez Ajouter une référence .... Cela devrait ressembler à quelque chose comme:

enter image description here

93
M.Babcock

NuGet> Bibliothèques clientes de l'API Web Microsoft ASP.NET

69
user1662812

Comment je l'ai résolu.

  1. Projet ouvert (!) "Propriétés", choisissez "Application", sélectionnez la structure de ciblage ".Net Framework 4.5"
  2. Faites un clic droit sur votre projet -> Ajouter une référence
  3. Assurez-vous que dans "Assemblées" -> "Extensions", l'option "System.Net.Http" est décochée.
  4. Allez dans "Assemblées" -> "Framework" et sélectionnez les options "System.Net.Http" et "System.Net.Http"
  5. C'est tout!

Dans mon cas, j'avais au début .Net 4.0 et "Assemblées" -> option "Extensions" "System.Net.Http" avec la version 2.0.0.0. Après mes actions "Assemblies" -> "Options du cadre" "System.Net.Http" et "System.Net.Http" avaient la même version 4.0.0.0.

12
LagiNatoRRR

Console Visual Studio Package Manager> Package d'installation Microsoft.AspNet.WebApi.Client

9
lance-p

En supposant que vous utilisiez Visual Studio 10, vous pouvez télécharger une installation incluant System.Net.Http pour Visual Studio 10 ici: téléchargez MVC4 pour VS10

Une fois que vous l'avez installé, cliquez avec le bouton droit de la souris sur le dossier References du projet VS, puis sélectionnez Ajouter une référence . Sélectionnez ensuite l'onglet Parcourir. Naviguez jusqu'au chemin d'installation assemblies pour l'installation de MVC4 (généralement dans Programmes (x86)/Microsoft ASP.NET/ASP.NET MVC4/assemblies) et sélectionnez l'assembly nommé 'System.Net.Http.dll'. Maintenant, vous pouvez ajouter votre 'using System.Net.Http' en haut de votre code et commencer à créer des connexions HttpClient.

5
Ussabin

Pour moi, il s’agissait de récupérer le paquet de nugets Microsoft.Net.Http . ( https://blogs.msdn.Microsoft.com/bclteam/p/httpclient/ )

3
Elferone

Vous devez avoir une référence à l’assemblage System.Web.Http qui a la classe HTTPClient que vous essayez d’utiliser. Essayez d'ajouter la ligne ci-dessous avant votre déclaration de classe

using System.Web.Http;

Si vous obtenez toujours l'erreur, essayez ceci dans Visual Studio

  1. Cliquez avec le bouton droit sur le dossier Références de votre projet.
  2. Sélectionnez Ajouter une référence.
  3. Sélectionnez l'onglet .NET (ou sélectionnez le bouton Parcourir s'il ne s'agit pas d'un assemblage .NET Framework).
  4. Double-cliquez sur l'assembly contenant l'espace de nom dans le message d'erreur (System.Web.Http.dll).
  5. Appuyez sur le bouton OK.
3
Akhil

il suffit d'aller ajouter une référence puis ajouter

system.net.http

 enter image description here

3
Hussein Talib

Vous aurez besoin d'un using System.Net.Http en haut.

2
Keith Nicholas

Résoudre le problème, 

1. allez à votre solution Explorer. 2. Cliquez avec le bouton droit sur le nom du projet et choisissez Ajouter 3. Sélectionnez des références et laissez le .NET Framework 4.5 terminer le chargement 4. Faites défiler la liste et sélectionnez System.Net.Http, puis cliquez sur ok . Problème résolu.

0
boakye_wozniac

J'ai continué à avoir l'erreur même après avoir ajouté System.Net.Http aux références d'Android et j'avais déjà installé le paquet de nuggets Microsoft.net.http. 

Il s’est avéré que j’ai ajouté le System.Net.Http au projet iOS, ce qui a permis de résoudre le problème.

0
Dyary
                                      use system.Net, 
                                     system.Net.WebRequest

j'ai eu le même problème ou même problème et je l'ai corrigé récemment. Cependant, System.net.http avait également été ajouté auparavant, mais cela ne l'a pas résolu. 

0
krishna

HttpClient est une nouveauté de .net 4.5. Vous devriez probablement utiliser HttpWebRequest .

0
Kibbee