From 78740bcac61927153c4fd08bb8627a557bb9287c Mon Sep 17 00:00:00 2001 From: "Fillmore, Christopher" Date: Tue, 14 Jan 2020 13:48:14 -0500 Subject: [PATCH] Update OkHttpDataSource with response body on bad HTTP status This change supplies the response body in OkHttpDataSource to InvalidResponseCodeException. Issue #6853 --- .../exoplayer2/ext/okhttp/OkHttpDataSource.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/extensions/okhttp/src/main/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSource.java b/extensions/okhttp/src/main/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSource.java index 3053961f49..9ced181d70 100644 --- a/extensions/okhttp/src/main/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSource.java +++ b/extensions/okhttp/src/main/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSource.java @@ -230,10 +230,19 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource { // Check for a valid response code. if (!response.isSuccessful()) { + byte[] errorResponseBody; + try { + errorResponseBody = Util.toByteArray(responseByteStream); + } catch (IOException e) { + throw new HttpDataSourceException( + "Error reading response body of unsuccessful response " + dataSpec.uri, + e, dataSpec, HttpDataSourceException.TYPE_OPEN); + } Map> headers = response.headers().toMultimap(); closeConnectionQuietly(); InvalidResponseCodeException exception = - new InvalidResponseCodeException(responseCode, response.message(), headers, dataSpec); + new InvalidResponseCodeException(responseCode, response.message(), headers, dataSpec, + errorResponseBody); if (responseCode == 416) { exception.initCause(new DataSourceException(DataSourceException.POSITION_OUT_OF_RANGE)); }