【发布时间】:2011-11-30 08:58:29
【问题描述】:
** 更新我在下面有一个解决方案,但它相当手动......如果有更简单的方法,我更喜欢这个答案。
我想记录一个网页的执行和下载时间,我正在尝试使用 WebClient.DownloadDataAsync 方法将数据发布到页面并获得结果。
我知道有很多方法可以使用 WebClient 或 WebRequest 对象进行发布,但它们都没有调度 DownloadProgressChanged 事件。这个事件是关键,因为我想跟踪下载进度,在 30 兆+的区域内。
我认为最好的方法是手动构建标题,但我遇到了死胡同。主要是我无法将数据添加到请求中。
WebClient client = new WebClient();
//!!!!*****no idea how to add the following data to the request
string data = "test1=value";
client.Headers.Add( "POST", "/About.aspx HTTP/1.1" );
client.Headers.Add( "Host", "http://localhost:12065" );
client.Headers.Add( "Content-Type", "application/x-www-form-urlencoded" );
client.Headers.Add( "Content-length", data.Length.ToString() );
client.DownloadProgressChanged += OnDownloadProgressChanged;
client.DownloadDataCompleted += OnDownloadDataCompleted;
client.DownloadDataAsync( new Uri( "http://localhost:12065/About.aspx" ) );
我对其他解决方案持开放态度,或者让此示例中的标头像客户端发送 POST 一样工作。
【问题讨论】:
-
我是
hitting dead-ends是什么意思?什么样的,你的代码有什么问题? -
嗯...我无法将数据附加到请求中。