2009-03-03 4 views
0

많은 HTTP "웹 서비스"요청을하는 응용 프로그램에서 작업하고 있는데 그 중 일부는 다소 큰 XML 파일이 될 수 있습니다. 현재 HTTP 요청은 두 번째 스레드에서 이루어 지므로 GUI/양식은 잠겨 있지 않습니다. 그러나 요청 진행 상황에 대한 사용자 의견을 줄 수는 없습니다..Net Compact Framework의 HTTP 진행

저는 지금까지이 작업에 HTTPWebRequest 클래스를 사용 해왔고, 완료 될 때까지 ASync 진행보고 콜백을 수행하지 않는 것에 대한 모든 연구 결과를 지적했습니다.

가까운 미래에이 앱은 3G/GPRS를 통해 큰 .jpg 및 .zip 파일을 업로드해야합니다. 진행률 막대 또는 어떤 유형의 피드백이 없으면 사용하기가 매우 어려울 것입니다.

다른 (아마도 제 3 자) 프레임 워크 나 클래스에서 사용할 수있는 프레임 워크가 있습니까?

데스크탑 .Net에서 작동하는 코드를 게시하지 마시고 CF에서 작동한다고 가정합니다. 감사합니다.

답변

0

XML 파일이 HTTP "Transfer-Encoding : chunked"헤더와 함께 전송되는 경우 HTTP는 파일의 크기를 알려주지 않습니다.

당신은 다음과 같은 코드를 서버에서 오는 바이트의 스트림을 가로 챌 수 있습니다
+0

마지막 Content-Length ..를 모르더라도 사용자에게 진행 상황에 대한 피드백을 제공하는 것이 좋습니다. – Alex

0

:

HttpWebResponse response = request.GetResponse(); 

Stream responseStream = response.GetResponseStream(); 

그런 다음 당신은 HTTP 스트림과 바이트가 얼마나 보고서에서 읽고 자신의 클래스에 응답 스트림을 포장 할 수 있습니다 이벤트를 통해 수신되었습니다. 이 작업을 실행하려면 별도의 스레드를 시작해야하며 스트림의 내용을 파일에 명시 적으로 작성해야합니다. (CF에서는이 방법을 사용하지 않았지만 이러한 방법은 CF에서 작동하는 것으로 문서화되었습니다.)