我正在开发一个产生大量HTTP“Web服务”请求的应用程序,其中一些可能是相当大的XML文件。现在,HTTP请求是在第二个线程上发出的,因此GUI / Form没有被锁定。但它仍然无法向用户提供有关请求进度的反馈。
到目前为止,我一直在使用HTTPWebRequest类来完成这项工作,并且我的所有研究都指向它不进行ASync进度报告回调,直到它完成。
在不久的将来,这款应用必须通过3G / GPRS上传大型.jpg和.zip文件。如果没有进度条或某种类型的反馈,这将非常令人不愉快。
是否有其他(可能是第三方)框架或我可以使用的类?
请不要发布使用Desktop .Net的代码,并假设它适用于CF,谢谢。
答案 0 :(得分:0)
请记住,如果使用HTTP“Transfer-Encoding:chunked”标头发送XML文件,HTTP不会告诉您文件的大小。
答案 1 :(得分:0)
您可以使用以下代码拦截来自服务器的字节流:
HttpWebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
然后,您可以将响应流包装在您自己的类中,该类从HTTP流中读取并报告通过事件接收的字节数。您必须启动自己的单独线程才能运行,并且必须将流的内容显式写入文件。 (我没有在CF中尝试过这个,但这些方法记录为适用于CF.)