Tôi đang làm việc trên dự án Windows Phone 8.1. Có hai phiên bản ứng dụng khách http trong Windows 8.1 - system.net.http
và windows.web.http
. Microsoft khuyên bạn nên sử dụng sau này.http yêu cầu hủy khách hàng trong các cửa sổ 8.1
Vì vậy, tôi quyết định đi với nó. Nhưng tôi không thể tìm thấy cách để hủy yêu cầu web bắt đầu bằng windows.web.http.httpclient
. Trong system.net.http.httpclient
có phương thức CancelPendingRequests
nhưng không tồn tại phương pháp tương tự cho tùy chọn sau.
Vì vậy, có thể hủy yêu cầu web và nếu có thì làm cách nào?
Mã mẫu:
Xem xét yêu cầu Http Get
yêu cầu google như sau. Tôi muốn hủy trước khi hoàn thành nếu người dùng muốn.
// Windows Phone 8.1 project (not silverlight)
public sealed partial class MainPage : Page
{
Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient();
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
Windows.Phone.UI.Input.HardwareButtons.BackPressed += (s, e) =>
{
CancelGet();
}
}
private void CancelGet()
{
// What to put here??
// tried client.Dispose();
// but still get request completes successfully
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
string res = await client.GetStringAsync(new Uri("http://www.google.com", UriKind.Absolute));
System.Diagnostics.Debug.WriteLine("result obtained\n" + res);
}
}
Không có phương pháp hỗ trợ HttpClient CancellationToken.
Ngoài ra, tôi đã cố gắng gọi Dispose() trên HttpClient trong khi yêu cầu đang diễn ra (nói GetStringAsync). Tuy nhiên vẫn không có ngoại lệ nào được ném cũng như yêu cầu bị hủy; GetStringAsync hoàn thành như bình thường và hiển thị kết quả chính xác.
Đăng mã của bạn .... –