0

我正在开发一个发出大量 HTTP“Web 服务”请求的应用程序,其中一些请求可能是相当大的 XML 文件。现在 HTTP 请求是在第二个线程上发出的,所以 GUI/Form 没有被锁定。但它仍然无法向用户反馈请求的进度。

到目前为止,我一直在使用 HTTPWebRequest 类来完成这项工作,我所有的研究都指向它不做异步进度报告回调,直到它完成。

在不久的将来,这个应用程序将不得不通过 3G/GPRS 上传大的 .jpg 和 .zip 文件。如果没有进度条或某种类型的反馈,使用起来会非常不愉快。

是否有任何其他(可能是第 3 方)框架或我可以使用的类?

请不要发布适用于 Desktop .Net 的代码,并假设它适用于 CF,谢谢。

4

2 回答 2

0

请记住,如果 XML 文件使用 HTTP“Transfer-Encoding: chunked”标头发送,HTTP 不会告诉您文件有多大。

于 2009-03-05T04:54:55.467 回答
0

您可以使用如下代码拦截来自服务器的字节流:

HttpWebResponse response = request.GetResponse();

Stream responseStream = response.GetResponseStream();

然后,您可以将响应流包装在您自己的类中,该类从 HTTP 流中读取并报告通过事件接收了多少字节。您必须启动自己的单独线程才能运行它,并且您必须将流的内容显式写入文件。(我没有在 CF 中尝试过,但这些方法被记录为适用于 CF。)

于 2009-03-11T10:48:03.040 回答