2009-03-03 74 views
0

我正在研究一个应用程序,它会产生大量HTTP“Web服务”请求,其中一些可能是相当大的XML文件。现在HTTP请求是在第二个线程上完成的,因此GUI /窗体没有被锁定。但是仍然无法向用户反馈请求的进展情况。.net精简框架中的HTTP进度

到目前为止,我一直在使用HTTPWebRequest类进行这项工作,并且我的所有研究成果都没有做到ASync进度报告回调,直到完成为止。

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

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

请不要发布桌面.Net工作的代码,并假设它对CF有效,谢谢。

回答

0

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

+0

即使不知道最终的Content-Length ..也不希望给用户一些关于进度的反馈。 – Alex 2009-03-10 07:33:31

0

您可以拦截来自服务器用这样的代码的字节流:

HttpWebResponse response = request.GetResponse(); 

Stream responseStream = response.GetResponseStream(); 

然后你就可以在自己的类从HTTP数据流并报告有多少字节具有读取包裹的响应流通过一个事件收到。您必须启动您自己的单独线程才能运行,并且您必须将流的内容明确写入文件。 (我在CF中没有尝试过这种方法,但是这些方法被记录为CF.)