gpt4 book ai didi

c# - 取消一个 'HttpClient' POST 请求

转载 作者:行者123 更新时间:2023-11-30 17:43:02 28 4
gpt4 key购买 nike

我正在我的 Windows Phone 8 应用程序上使用 HttpClient.PostAsync() 上传图像。用户可以选择通过 UI 按钮取消此上传。

要取消 POST 请求,我设置了一个 CancellationToken。但这不起作用。取消请求后,我仍然看到我的代理中正在上传,很明显该请求被忽略了。我的代码:

using (var content = new MultipartFormDataContent())
{
var file = new StreamContent(stream);
file .Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
FileName = "filename.jpg",
};
file.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
content.Add(file);

await httpclient.PostAsync(new Uri("myurl", UriKind.Absolute), content,
cancellationToken);
}

另请注意,我有一个用于 CancellationTokenCancellationTokenSource。用户单击“取消”按钮后,将调用 tokensource.Cancel()。此外,我的测试用例中的图像从 1 到 2 MB(不是那么大)。

那么,有没有办法取消 HttpClient POST 请求?

最佳答案

try
{
var client = new HttpClient();

var cts = new CancellationTokenSource();
cts.CancelAfter(3000); // 3 seconds

var request = new HttpRequestMessage();

await client.PostAsync(url, content, cts.Token);
}
catch(OperationCanceledException ex)
{
// timeout has been hit
}

关于c# - 取消一个 'HttpClient' POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com