2015-10-01 5 views
7

Utilizzo di ASP.NET 5 sul mio Mac in codice Visual Studio. Ho una API RESTful che devo chiamare e non sono sicuro di come farlo. Ho visto molti esempi con WebClient, HttpClient, WebRequest e HttpWebRequest.Come chiamare un'API RESTful con ASP.NET 5

Penso che il mio punto dolente sia il framework dnxcore50. Qualcuno può indicarmi la giusta direzione con alcuni esempi di codice?

+0

Leggi [questo tutorial] (http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client) – AnhTriet

+0

HttpClient è disponibile in .NET Core. Questa [domanda] (http://stackoverflow.com/questions/27946798/httpclient-in-asp-net-5-0-non-found) è piuttosto vecchia, ho il sospetto che tu possa ottenerla da NuGet senza dover andare alle build notturne ora. – mason

+0

@AnhTriet, l'ho provato, ma quello che arrivo a questa riga: Prodotto prodotto = attendere risposta.Contenuto.ReadAsAsync> Prodotti>(); Viene visualizzato questo errore: "HttpContent" non contiene una definizione per "ReadAsAsync" e non è possibile trovare alcun metodo di estensione "ReadAsAsync" che accetta un primo argomento di tipo "HttpContent" (manca una direttiva using o un riferimento all'assembly?) [dnx451, dnxcore50] –

risposta

7

Ecco un esempio su come chiamare un servizio. Si prega di controllare il References e using attentamente.

Una cosa importante che dovete fare è installare il Web API librerie client pacchetto: Dal menu Strumenti, selezionare NuGet Package Manager, quindi selezionare Package Manager Console. Nella finestra della console di Gestione pacchetti, digitare il seguente comando: Install-Package Microsoft.AspNet.WebApi.Client.

Per il codice sorgente completo, controllare questo link.

Call service

+0

Ottenere un errore leggermente diverso, ma qui è una schermata: https://dl.dropboxusercontent.com/u/6651060/error.jpg –

+0

Digitare su '> Tracker>'. Dovrebbe essere ''. – AnhTriet

+0

WOW! Face Palm .... Non posso credere di averlo perso. Alla fine ho seguito quel tutorial e ho usato un po 'di quello che ha detto anche @Gigi. Grazie per l'aiuto! –

3

Suppongo che sia lo stesso modo in cui lo facevamo prima di ASP .NET 5, quindi prima di tutto si installa il pacchetto NuGet di Librerie client API Web ASP.NET.

Con quella disposizione, si fa riferimento System.Net.Http:

using System.Net.Http; 

Poi lo si utilizza come segue:

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

che appena ti dà la risposta. Normalmente vorrai esaminare il contenuto, specialmente per le richieste GET. È possibile effettuare questa operazione:

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

che il solo ti dà la stringa nel contenuto, quindi se è JSON, probabilmente avrete bisogno di usare qualcosa come JSON.NET (Newtonsoft.Json) per deserializzare in classi strutturati.

Questo è dalla memoria, quindi potrebbe essere necessario un piccolo aggiustamento qua e là.

+0

Questa domanda riguarda specificamente .NET Core, che la tua risposta non affronta. – mason

+0

Ho pensato che qualcuno abbia detto che HttpClient è disponibile in .NET Core. – Gigi

+0

Sì, lo è. Ma è in uno spazio dei nomi diverso. E un altro pacchetto NuGet. E probabilmente un feed NuGet completamente diverso. – mason

3

Per fare questo sto usando il NuGet alimentare https://api.nuget.org/v3/index.json

Nel mio project.json Al momento ho queste dipendenze rilevanti e basta usare il "dnxcore50" quadro:

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

Allora sono utilizzando HttpClient. Al momento (beta7) non funziona su Linux o OSX a causa di https://github.com/dotnet/corefx/issues/2155.