2015-10-01 22 views
7

Làm việc với ASP.NET 5 trên máy Mac của tôi trong Visual Studio Code. Tôi có một API RESTful tôi cần gọi và không chắc chắn chính xác cách thực hiện. Tôi đã nhìn thấy nhiều ví dụ sử dụng WebClient, HttpClient, WebRequest và HttpWebRequest.Cách gọi API RESTful với ASP.NET 5

Tôi nghĩ điểm đau của tôi là khung công tác dnxcore50. Ai đó có thể xin vui lòng chỉ cho tôi đi đúng hướng với một số mẫu mã?

+0

đọc [hướng dẫn này] (http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client) – AnhTriet

+0

HttpClient có sẵn trong .NET Core. [Câu hỏi] này (http://stackoverflow.com/questions/27946798/httpclient-in-asp-net-5-0-not-found) là khá cũ, tôi nghi ngờ rằng bạn có thể lấy nó từ NuGet mà không cần phải đi để xây dựng hàng đêm ngay bây giờ. – mason

+0

@AnhTriet, tôi đã thử điều đó, nhưng những gì tôi nhận được cho dòng này: Sản phẩm sản phẩm = chờ phản hồi.Content.ReadAsAsync> Sản phẩm>(); Tôi nhận được lỗi này: 'HttpContent' không chứa định nghĩa cho 'ReadAsAsync' và không có phương pháp mở rộng 'ReadAsAsync' chấp nhận đối số đầu tiên của loại 'HttpContent' có thể được tìm thấy (bạn thiếu một chỉ thị sử dụng hoặc tham chiếu assembly?) [dnx451, dnxcore50] –

Trả lời

7

Dưới đây là ví dụ về cách gọi dịch vụ. Vui lòng kiểm tra cẩn thận Referencesusing.

Một điều quan trọng bạn phải làm là cài đặt các Web API Libraries khách hàng gói: Từ menu Tools, chọn NuGet Package Manager, sau đó chọn Package Manager Console. Trong cửa sổ Package Manager Console, gõ lệnh sau: Install-Package Microsoft.AspNet.WebApi.Client.

Để có mã nguồn đầy đủ, hãy xem link này.

Call service

+0

Nhận một lỗi hơi khác, nhưng đây là một ảnh chụp màn hình: https://dl.dropboxusercontent.com/u/6651060/error.jpg –

+0

Typo tại '> Tracker>'. Nên là ' '. – AnhTriet

+0

WOW! Face Palm .... Không thể tin rằng tôi đã bỏ lỡ điều đó. Cuối cùng tôi đã làm theo hướng dẫn đó và sử dụng một số những gì @Gigi nói quá. Cảm ơn bạn đã giúp đỡ! –

3

Tôi giả sử nó giống như cách chúng tôi đã sử dụng để thực hiện nó trước ASP .NET 5, vì vậy trước tiên bạn cài đặt gói ASPG Web API Client Libraries NuGet.

Với điều đó có sẵn, bạn tham khảo System.Net.Http:

using System.Net.Http; 

Sau đó, bạn sử dụng nó như sau:

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

Đó chỉ mang đến cho bạn câu trả lời. Thông thường, bạn sẽ muốn xem nội dung, đặc biệt là các yêu cầu GET. Bạn có thể làm điều này bằng cách:

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

Đó chỉ đơn thuần cung cấp cho bạn chuỗi trong nội dung, vì vậy nếu nó JSON, bạn có thể muốn sử dụng cái gì đó như JSON.NET (Newtonsoft.Json) để deserialize nó vào các lớp cấu trúc.

Đây là từ bộ nhớ để bạn có thể cần một chút tinh chỉnh ở đây và ở đó.

+0

Câu hỏi này đặc biệt về .NET Core, câu trả lời của bạn không giải quyết. – mason

+0

Tôi nghĩ ai đó đã nói HttpClient có sẵn trong .NET Core. – Gigi

+0

Vâng, đúng vậy. Nhưng nó trong không gian tên khác nhau. Và một gói NuGet khác. Và có lẽ là một nguồn cấp dữ liệu NuGet hoàn toàn khác. – mason

3

Để làm điều này tôi đang sử dụng NuGet ăn https://api.nuget.org/v3/index.json

Trong project.json tôi hiện đang có những phụ thuộc có liên quan và chỉ sử dụng "dnxcore50" khung:

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

Sau đó tôi sử dụng HttpClient. Ngay bây giờ (beta7) nó không hoạt động trên Linux hoặc OSX vì https://github.com/dotnet/corefx/issues/2155.