diff --git a/okdownload/src/main/java/com/liulishuo/okdownload/core/download/ConnectTrial.java b/okdownload/src/main/java/com/liulishuo/okdownload/core/download/ConnectTrial.java index dce11ec9..9a749848 100644 --- a/okdownload/src/main/java/com/liulishuo/okdownload/core/download/ConnectTrial.java +++ b/okdownload/src/main/java/com/liulishuo/okdownload/core/download/ConnectTrial.java @@ -19,7 +19,6 @@ import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.annotation.Nullable; - import com.liulishuo.okdownload.DownloadListener; import com.liulishuo.okdownload.DownloadTask; import com.liulishuo.okdownload.OkDownload; @@ -27,7 +26,6 @@ import com.liulishuo.okdownload.core.breakpoint.BreakpointInfo; import com.liulishuo.okdownload.core.connection.DownloadConnection; import com.liulishuo.okdownload.core.exception.DownloadSecurityException; - import java.io.IOException; import java.net.HttpURLConnection; import java.util.HashMap; @@ -238,9 +236,13 @@ private static boolean isAcceptRange(@NonNull DownloadConnection.Connected conne } private static long findInstanceLength(DownloadConnection.Connected connected) { - // Content-Range - final long instanceLength = parseContentRangeFoInstanceLength( + //content length + long instanceLength = convertContentLengthString(connected.getResponseHeaderField(CONTENT_LENGTH)); + if (instanceLength == CHUNKED_CONTENT_LENGTH){ + // Content-Range + instanceLength = parseContentRangeFoInstanceLength( connected.getResponseHeaderField(CONTENT_RANGE)); + } if (instanceLength != CHUNKED_CONTENT_LENGTH) return instanceLength; // chunked on here @@ -254,6 +256,16 @@ private static long findInstanceLength(DownloadConnection.Connected connected) { return CHUNKED_CONTENT_LENGTH; } + public static long convertContentLengthString(String s) { + if (s == null) return -1; + try { + return Long.parseLong(s); + } catch (NumberFormatException e) { + return -1; + } + } + + boolean isNeedTrialHeadMethodForInstanceLength( long oldInstanceLength, @NonNull DownloadConnection.Connected connected) { if (oldInstanceLength != CHUNKED_CONTENT_LENGTH) {