C# 使用WebClient下载包含POST数据的文件的正确方法
我目前有一个将数据发布到web服务器,然后下载响应的应用程序。我使用C# 使用WebClient下载包含POST数据的文件的正确方法,c#,download,webclient,C#,Download,Webclient,我目前有一个将数据发布到web服务器,然后下载响应的应用程序。我使用UploadDataAsync实现结果,使用以下方法: using (var client = new WebClient()) { var dataToPost = Encoding.Default.GetBytes(postBody); client.Headers.Add(HttpRequestHeader.Authorization, au
UploadDataAsync
实现结果,使用以下方法:
using (var client = new WebClient())
{
var dataToPost = Encoding.Default.GetBytes(postBody);
client.Headers.Add(HttpRequestHeader.Authorization, authToken); // Add the authorization header
client.UploadDataCompleted += UploadCompleteCallback; // What do do when the download completes
client.UploadProgressChanged += UploadProgressCallback; // What to do when the download is in progress
client.UploadDataAsync(uri, "POST", dataToPost);
while (client.IsBusy)
{
// We're going to wait until the operation completes
}
}
它确实成功地下载了文件,但是我想知道它是否正确,因为我没有使用DownloadDataAsync
我之所以不这样做,是因为我找不到一种方法来使用DownloadDataAsync
方法发送帖子数据
此外,UploadProgressCallback
仅在应用程序启动时调用一次,然后等待一段时间,基本上在文件完成时再次调用get(因此不是流畅的下载进度指示器)。这可能是因为我使用了上传
而不是下载
为了完整性这里是我的上传进度回调
:
private static void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e)
{
// Displays the operation identifier, and the transfer progress.
Console.WriteLine("{0} Downloaded {1} of {2} bytes. {3} % complete...",
(string)e.UserState,
e.BytesReceived,
e.TotalBytesToReceive,
e.ProgressPercentage);
}