Android 앱에서 다운로드를하고 있는데 다운로드 한 퍼센트를 표시하려면 content_length를 얻어야합니다.urlConnection에 대해 getContentLength()가 실패했습니다. 다운로드 비율을 계산할 수 없습니다.
파일은 내 클라이언트가 설치된 서버에 있습니다. 이 서버에서 getContentLength()를 호출하면 -1이 반환됩니다.
THIS SERVERS HEADER DOESN'T WORK WITH urlConnection.getContentLength()
$ curl --head "http://www.server0.com/ango/thefile.m4v"
HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=A17762C6B65FD8D35840110F8628DE4B.V5; Path=/; HttpOnly
X-ServedBy: web114
Set-Cookie: SS_MID=7315b0cb-054c-4dd8-a013-c7163793becehfjcndg8; Domain=.tangoberretin.com; Expires=Thu, 13-Apr-2023 07:57:07 GMT; Path=/
Pragma: cache
Cache-Control: private,max-age=86400
Last-Modified: Thu, 21 Feb 2013 06:28:24 GMT
Content-Disposition: attachment; filename="thefile.m4v";
Accept-Ranges: bytes
Content-Range: bytes 0-6716578/6716579
Content-Type: application/octet-stream;charset=UTF-8
Content-Length: 6716579
Date: Mon, 15 Apr 2013 07:57:07 GMT
Server: SSWS
Set-Cookie: WebPersCookie=Gn5lN9r2EIK+3eKz0tv/bEs4IJpcBzYg22jKvv/JD1eAA1N3D0pevaz3zuXOD3uTT950AQdstGRJgdE=; path=/
그래서 내가 테스트를하고 내 자신의 서버 (아파치)에 파일을 넣어 모든 것이 잘 작동 : 여기 헤더입니다. 그 헤더는 다음과 같습니다.
THIS SERVERS HEADER WORKS WITH urlConnection.getContentLength()
$ curl --head "http://server1.net/wp-content/video/thefile.m4v"
HTTP/1.1 200 OK
Date: Mon, 15 Apr 2013 07:57:42 GMT
Server: Apache
Last-Modified: Sun, 14 Apr 2013 23:49:00 GMT
Accept-Ranges: bytes
Content-Length: 502365
Content-Type: text/plain
그럼 첫 번째 경우가 실패의 원인이며 그 원인은 무엇입니까? 이상적으로는 파일을 그대로 두는 것이 좋습니다.
* UPDATE * * 나는 안드로이드 응용 프로그램에서 헤더를 인쇄 한, 분명히 서버가 안드로이드 에이전트에 대한 콘텐츠 길이를 보내지 않습니다
. 내가
HTTP/1.1 200 OK
Accept-Ranges :
bytes
Cache-Control :
private,max-age=86400
Content-Disposition :
attachment; filename="04Left_Turning_Check_Step.m4v";
Content-Range :
bytes 0-7019776/7019777
Content-Type :
application/octet-stream;charset=UTF-8
Date :
Mon, 15 Apr 2013 08:39:06 GMT
Last-Modified :
Wed, 02 Jan 2013 18:40:09 GMT
Pragma :
cache
Server :
SSWS
Set-Cookie :
JSESSIONID=0B1D0CFFD975ED2736BFF7BBC23ACD96.V5; Path=/; HttpOnly
SS_MID=5a7bd305-4ac1-4d4d-98a3-67fa26c0db56hfje5d3d; Domain=.tangoberretin.com; Expires=Thu, 13-Apr-2023 08:39:06 GMT; Path=/
WebPersCookie=WIo8mRMTANAAke3GEsDOsONkGZoRcVvqpC4Am/pl/3WFB9hSEGH5DfGiDSKJDLc2nbZBpWFy3/Yfb3s=; path=/
Transfer-Encoding :
chunked
Vary :
Accept-Encoding
X-Android-Received-Millis :
1366015147201
X-Android-Sent-Millis :
1366015146842
X-ServedBy :
web115
전송 - 인코딩 : HttpURLConnection의에 의해 그 기본 설정을 gzip을, 내가 설명 : 청크는 인코딩을 적용하여 원인 일 수 있습니다 그것은 또 다른 질문과 함께 도움이되기를 바랍니다. http://stackoverflow.com/a/23490011/1294681 – VinceStyling