TL; DR: Jestem nowy w tym języku i nie mam pojęcia, co robię
oto moja dotychczasowa klasa:
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();
}
}
kiedy robię csc filename.cs, pojawia się następujący błąd:
Nazwa typu lub przestrzeni nazw „Http” nie istnieje w przestrzeni nazw „System.Net” (czy brakuje odwołania do zestawu?)
webClient
pola). Poza tym nigdy nie używasz go do niczego. Prawdopodobnie mógłbyś go po prostu usunąć.Odpowiedzi:
HttpClient
mieszka wSystem.Net.Http
przestrzeni nazw.Musisz dodać:
I upewnij się, że odwołujesz się
System.Net.Http.dll
do .NET 4.5.Opublikowany kod wydaje się nie robić nic z
webClient
. Czy jest coś nie tak z kodem, który faktycznie kompiluje się przy użyciuHttpWebRequest
?Aktualizacja
Aby otworzyć Add Reference okna kliknij prawym przyciskiem myszy projektu w Solution Explorer i wybierz Add Reference ... . Powinien wyglądać mniej więcej tak:
źródło
System.Net.Http.dll
?Add References
gdy pojawi się okno dialogowe, wybierz skrajną lewą kartę (nie używam wbudowanego okna dialogowego odwołań, ale moje nazywa się Zespoły ). Przewiń listę, aż zobaczysz element o nazwieSystem.Net.Http
kliknij go dwukrotnie i odbuduj.Pakiet NuGet> Microsoft.AspNet.WebApi.Client
źródło
Jak to rozwiązałem.
W moim przypadku miałem na początku .Net 4.0 i "Assemblies" -> "Extensions" opcja "System.Net.Http" z wersją 2.0.0.0. Po moich akcjach „Assemblies” -> „Framework” opcje „System.Net.Http” i „System.Net.Http” miały tę samą wersję 4.0.0.0.
źródło
Konsola Menedżera pakietów programu Visual Studio> Zainstaluj pakiet Microsoft.AspNet.WebApi.Client
źródło
Zakładając, że korzystasz z programu Visual Studio 10, możesz pobrać instalację, która zawiera System.Net.Http, dla programu Visual Studio 10 tutaj: pobierz MVC4 dla VS10
Po zainstalowaniu kliknij prawym przyciskiem myszy folder References w projekcie VS, a następnie wybierz opcję Dodaj odwołanie . Następnie wybierz kartę Przeglądaj . Przejdź do ścieżki instalacji zestawów dla instalacji MVC4 (zwykle w Program Files (x86) / Microsoft ASP.NET/ASP.NET MVC4 / assemblies) i wybierz zestaw o nazwie „System.Net.Http.dll”. Teraz możesz dodać „using System.Net.Http” u góry kodu i rozpocząć tworzenie połączeń HttpClient.
źródło
po prostu przejdź do dodania odniesienia, a następnie dodaj
źródło
Musisz mieć odniesienie do
System.Web.Http
zestawu, który maHTTPClient
klasę, której próbujesz użyć. Spróbuj dodać poniższy wiersz przed deklaracją klasyJeśli nadal otrzymujesz błąd, spróbuj to zrobić w
Visual Studio
System.Web.Http.dll
).źródło
HttpClient
należy doSystem.Web.Http.dll
zestawu .NET 4.5 (nieSystem.Net
).Properties
. Powinieneś zobaczyćReferences
po lewej stronie.Dla mnie był to pakiet NuGet Microsoft.Net.Http. ( Https://blogs.msdn.microsoft.com/bclteam/p/httpclient/ )
źródło
Będziesz potrzebować
using System.Net.Http
na górze.źródło
HttpClient jest nowy w .net 4.5. Prawdopodobnie powinieneś używać HttpWebRequest .
źródło
HttpWebRequest
, ale nie jestem pewien, dlaczego go nie używają.Rozwiązać problem :
Net framework 4.5
aby zakończyć ładowanieSystem.Net.Http
i kliknij OK.Problem rozwiązany.
źródło
Sprawienie, że właściwość „Kopiuj lokalnie” jest prawdziwa dla odniesienia, zrobiło to za mnie. Rozwiń References, kliknij prawym przyciskiem myszy System.Net.Http i zmień wartość właściwości Copy Local na True w oknie właściwości. Używam VS2019.
źródło
Upewnij się, że odwołuje się do niego w pliku web.config:
źródło
Za pomocą Menedżera pakietów Nuget zainstaluj Microsoft.AspNet.WebApi.Core.
Po tym:
lub jeśli używasz VB
imports System.Web.Http
źródło
Miałem ten problem po uaktualnieniu do .NET Framework 4.7.2. Dowiedziałem się, że pakiet Nuget dla System.Net.Http nie jest już zalecany. Oto obejścia:
źródło
W programie Visual Studio można załadować pakiet za pomocą nuget
źródło