summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2015-10-16 13:44:02 +0200
committerMartin Fietz <Martin.Fietz@gmail.com>2015-10-16 13:44:02 +0200
commit75b2dc39c6d79cd09bbfd3e0b92ac0e4b5ff5ea8 (patch)
tree6ea7d32300a32cc76bcf051c1d467d403168e8ee /core
parent0e2b056d4e069d1ec25bdc7c3f5758254efb2df6 (diff)
downloadAntennaPod-75b2dc39c6d79cd09bbfd3e0b92ac0e4b5ff5ea8.zip
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.java19
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");