128 votes

System.Net.Http : missing from namespace ? (avec .net 4.5)

TL ; DR : Je suis nouveau dans cette langue et je 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();
        }
}

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

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

0 votes

Vous essayez d'accéder à un champ non statique à partir d'une méthode statique (la méthode webClient ). De plus, vous ne l'utilisez jamais vraiment pour quoi que ce soit. Vous pourriez probablement le supprimer.

6voto

Hussein Alrubaye Points 875

Il suffit d'aller dans ajouter une référence puis ajouter

system.net.http

enter image description here

4voto

Ned Points 179

J'ai rencontré ce problème après la mise à niveau vers .NET Framework 4.7.2. J'ai découvert que le paquet Nuget pour System.Net.Http n'est plus recommandé. Voici des solutions de contournement :

0 votes

MERCI, j'apprécie beaucoup

3voto

Keith Nicholas Points 20875

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

3voto

Akhil Points 4181

Vous devez avoir une référence à la System.Web.Http qui a le HTTPClient que vous essayez d'utiliser. Essayez d'ajouter la ligne suivante avant votre déclaration de classe

using System.Web.Http;

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

  1. Faites un clic 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'assemblage contenant l'espace de nom dans le message d'erreur ( System.Web.Http.dll ).
  5. Appuyez sur le bouton OK.

0 votes

@TheLindyHop : pouvez-vous essayer de suivre les étapes de la réponse mise à jour ?

0 votes

@Akhil - HttpClient appartient à la System.Web.Http.dll Assemblage .NET 4.5 (pas System.Net ).

0 votes

@M.Babcock : merci de me le faire savoir. J'ai mis à jour la réponse :)

3voto

Elferone Points 334

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X