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)); }