2015-10-01 15 views
7

Mit ASP.NET 5 auf meinem Mac in Visual Studio Code arbeiten. Ich habe eine RESTful-API, die ich aufrufen muss, und bin mir nicht sicher, wie ich das genau machen soll. Ich habe viele Beispiele mit WebClient, HttpClient, WebRequest und HttpWebRequest gesehen.So rufen Sie eine RESTful API mit ASP.NET auf 5

Ich denke, mein Schmerzpunkt ist das dnxcore50 Framework. Kann mir jemand bitte mit einigen Codebeispielen in die richtige Richtung weisen?

+0

Read [dieses Tutorial] (http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client) – AnhTriet

+0

Httpclient ist in .NET Core verfügbar. Diese [Frage] (http://stackoverflow.com/questions/27946798/httpclient-in-asp-net-5-5-not-found) ist ziemlich alt, ich vermute, dass Sie es von NuGet bekommen können, ohne gehen zu müssen zu den nächtlichen Builds jetzt. – mason

+0

@AnhTriet, habe ich versucht, aber was ich zu dieser Zeile: Produkt Produkt = erwarten Antwort.Content.ReadAsAsync> Produkt>(); Ich erhalte diesen Fehler: 'HttpContent' enthält keine Definition für 'ReadAsAsync' und es wurde keine Erweiterungsmethode 'ReadAsAsync' gefunden, die ein erstes Argument vom Typ 'HttpContent' akzeptiert (fehlt eine using-Direktive oder eine Assembly-Referenz?) [dnx451, dnxcore50] –

Antwort

7

Hier ist ein Beispiel zum Aufrufen eines Dienstes. Bitte überprüfen Sie die und using sorgfältig.

Eine wichtige Sache, die Sie tun müssen, ist das Paket Client-Bibliotheken Web-API installieren: Aus dem Menü Extras wählen NuGet Package Manager, dann Package Manager Console wählen. Geben Sie im Fenster der Package Manager-Konsole den folgenden Befehl ein: Install-Package Microsoft.AspNet.WebApi.Client.

Für den vollständigen Quellcode, überprüfen Sie diese link.

Call service

+0

Einen etwas anderen Fehler bekommen, aber hier ist ein Screenshot: https://dl.dropboxusercontent.com/u/6651060/error.jpg –

+0

Typo bei '> Tracker>'. Sollte '' sein. – AnhTriet

+0

WOW! Face Palm .... Ich kann nicht glauben, dass ich das verpasst habe. Letztendlich habe ich dieses Tutorial verfolgt und etwas von dem verwendet, was @Gigi auch gesagt hat. Danke für Ihre Hilfe! –

3

Ich nehme an, es ist die gleiche Weise, die wir vor ASP.NET 5 getan haben, also installieren Sie zuerst das Paket ASP.NET Web API Client Libraries NuGet.

Mit dieser Verfügung verweisen Sie System.Net.Http:

using System.Net.Http; 

Dann Sie es wie folgt verwenden:

using (var httpClient = new HttpClient()) 
{ 
    var response1 = await httpClient.GetAsync(url1); 
    var response2 = await httpClient.PostAsync(url2); 
    var response3 = await httpClient.SendAsync(url3); 
} 

Das gibt Ihnen nur die Antwort. In der Regel sollten Sie sich den Inhalt ansehen, insbesondere für GET-Anfragen. Sie können dies tun, indem sie:

var content = await response1.Content.ReadAsStringAsync(); 

dass nur gibt Ihnen die Zeichenfolge im Inhalt, also wenn es JSON ist, möchten Sie wahrscheinlich so etwas wie JSON.NET (Newtonsoft.Json) verwenden, um es in strukturierte Klassen deserialisieren.

Dies ist aus dem Speicher, so dass Sie hier und da ein wenig zwicken müssen.

+0

Diese Frage bezieht sich speziell auf .NET Core, auf die sich Ihre Antwort nicht bezieht. – mason

+0

Ich dachte jemand sagte HttpClient ist in .NET Core verfügbar. – Gigi

+0

Ja, ist es. Aber es ist in einem anderen Namensraum. Und ein anderes NuGet-Paket. Und wahrscheinlich ein ganz anderer NuGet-Feed. – mason

3

Um dies zu tun, ich bin mit der NuGet füttern https://api.nuget.org/v3/index.json

In meinem project.json Ich habe diese relevanten Abhängigkeiten zur Zeit und verwenden Sie einfach die „dnxcore50“ Rahmen:

"Microsoft.AspNet.WebApi.Client": "5.2.3", 
"System.Net.Http": "4.0.0", 
"System.Runtime.Serialization.Xml": "4.0.10" 

Dann bin ich mit HttpClient. Momentan (beta7) funktioniert es unter Linux oder OSX wegen https://github.com/dotnet/corefx/issues/2155 nicht.

Verwandte Themen