2012-02-28 19 views
16

Tôi muốn sử dụng dịch vụ web HTTP và tôi đã phát triển một ứng dụng cho wp7.Lớp WebClient không tồn tại trong Windows 8

Tôi sử dụng lớp WebClient, nhưng tôi không thể sử dụng nó cho windows 8 ("lỗi: loại hoặc không gian tên không thể tìm thấy").

Tôi có thể sử dụng những gì khác?

Bạn có thể cung cấp cho tôi mẫu mã không?

Microsoft có trang web trợ giúp khi không gian tên không tồn tại?

+7

Bởi "windows8", bạn có thực sự có nghĩa là "WinRT" không? Nó sẽ làm việc hoàn toàn tốt đẹp trên Windows 8 nhắm mục tiêu khuôn khổ .NET thông thường. Nếu bạn đang nhắm mục tiêu WinRT, thì chắc chắn: bạn cần phải sử dụng những gì WinRT cung cấp. –

+2

1. Nó không phải là một không gian tên, đó là một lớp học. 2. Có, nó không có trong WinRT vì nó khuyến khích một thực hành xấu khi thực hiện các cuộc gọi đồng bộ. Sử dụng lớp HttpWebRequest để thay thế. – wizzard0

+4

"Có, nó không có trong WinRT vì nó khuyến khích thực hành không tốt để thực hiện các cuộc gọi đồng bộ." Điều này chắc chắn không phải là lý do WebClient không tồn tại trong WinRT vì WebClient có các phiên bản Async hầu hết các phương thức của nó. Lý do thiếu từ WinRT có thể là do các lý do khác. –

Trả lời

26

Tùy chọn 1: HttpClient nếu bạn không cần thông báo tiến độ xác định, đây là những gì bạn muốn sử dụng. Thí dụ.

public async Task<string> MakeWebRequest() 
{ 
     HttpClient http = new System.Net.Http.HttpClient(); 
     HttpResponseMessage response = await http.GetAsync("http://www.example.com"); 
     return await response.Content.ReadAsStringAsync(); 
} 

Phương án 2: Khi bạn cần thông báo tiến bộ, bạn có thể sử dụng DownloadOperation hoặc BackgroundDownloader. Điều này sample trên MSDN là một khởi đầu tốt.

Tùy chọn 3: Vì bạn đã đề cập đến dịch vụ web và nếu nó trả về XML, bạn có thể sử dụng XmlDocument.LoadFromUriAsync để trả lại cho bạn một tài liệu XML. Ví dụ

public async void DownloadXMLDocument() 
{ 
     Uri uri = new Uri("http://example.com/sample.xml"); 
     XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(uri); 
     //do something with the xmlDocument. 
} 

Khi bạn đang phát triển cho tàu điện ngầm .Net framework sẽ bị giới hạn so với phiên bản dành cho máy tính để bàn. Nếu bạn thấy lỗi không gian tên không tìm thấy thì thường là do thực tế này. Điều này link trên MSDN có danh sách các không gian tên, các lớp học có sẵn cho tàu điện ngầm.

Các vấn đề liên quan