diff options
author | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-10-17 11:59:14 -0400 |
---|---|---|
committer | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-10-17 11:59:14 -0400 |
commit | 88050cff9f7b9e945ba881a3de453c27c610b50c (patch) | |
tree | 32f7e9d4d1aede312d46cb7d506c6bb4cc69c23f /core | |
parent | bcef62d11eb997005ae0ab7814b4f70acfd80162 (diff) | |
parent | 75b2dc39c6d79cd09bbfd3e0b92ac0e4b5ff5ea8 (diff) | |
download | AntennaPod-88050cff9f7b9e945ba881a3de453c27c610b50c.zip |
Merge pull request #1266 from mfietz/issue/1259-protocol-error
Use HTTP/1.1 when new fancy protocols fail
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java index 40b7de170..eda857bd5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.core.service.download; import android.util.Log; import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Protocol; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseBody; @@ -22,6 +23,7 @@ import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.net.URI; import java.net.UnknownHostException; +import java.util.Arrays; import java.util.Date; import de.danoeh.antennapod.core.ClientConfig; @@ -93,12 +95,23 @@ public class HttpDownloader extends Downloader { // add range header if necessary if (fileExists) { request.setSoFar(destination.length()); - httpReq.addHeader("Range", - "bytes=" + request.getSoFar() + "-"); + httpReq.addHeader("Range", "bytes=" + request.getSoFar() + "-"); Log.d(TAG, "Adding range header: " + request.getSoFar()); } - Response response = httpClient.newCall(httpReq.build()).execute(); + Response response = null; + try { + response = httpClient.newCall(httpReq.build()).execute(); + } catch(IOException e) { + Log.e(TAG, e.toString()); + if(e.getMessage().contains("PROTOCOL_ERROR")) { + httpClient.setProtocols(Arrays.asList(Protocol.HTTP_1_1)); + response = httpClient.newCall(httpReq.build()).execute(); + } + else { + throw e; + } + } responseBody = response.body(); String contentEncodingHeader = response.header("Content-Encoding"); boolean isGzip = StringUtils.equalsIgnoreCase(contentEncodingHeader, "gzip"); |