Add HttpDataSource.getResponseCode to provide the status code associated with the most recent HTTP response.

PiperOrigin-RevId: 266218104
This commit is contained in:
olly 2019-08-29 21:41:19 +01:00 committed by Oliver Woodman
parent 2451211294
commit f5c1e8b5e3
5 changed files with 26 additions and 1 deletions

View File

@ -46,6 +46,8 @@
postroll ad ([#6314](https://github.com/google/ExoPlayer/issues/6314)).
* Fix audio selection issue where languages are compared by bit rate
([#6335](https://github.com/google/ExoPlayer/issues/6335)).
* Add `HttpDataSource.getResponseCode` to provide the status code associated
with the most recent HTTP response.
### 2.10.4 ###

View File

@ -392,6 +392,13 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
requestProperties.clear();
}
@Override
public int getResponseCode() {
return responseInfo == null || responseInfo.getHttpStatusCode() <= 0
? -1
: responseInfo.getHttpStatusCode();
}
@Override
public Map<String, List<String>> getResponseHeaders() {
return responseInfo == null ? Collections.emptyMap() : responseInfo.getAllHeaders();

View File

@ -172,6 +172,11 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
return response == null ? null : Uri.parse(response.request().url().toString());
}
@Override
public int getResponseCode() {
return response == null ? -1 : response.code();
}
@Override
public Map<String, List<String>> getResponseHeaders() {
return response == null ? Collections.emptyMap() : response.headers().toMultimap();

View File

@ -83,6 +83,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
@Nullable private HttpURLConnection connection;
@Nullable private InputStream inputStream;
private boolean opened;
private int responseCode;
private long bytesToSkip;
private long bytesToRead;
@ -234,6 +235,11 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
return connection == null ? null : Uri.parse(connection.getURL().toString());
}
@Override
public int getResponseCode() {
return connection == null || responseCode <= 0 ? -1 : responseCode;
}
@Override
public Map<String, List<String>> getResponseHeaders() {
return connection == null ? Collections.emptyMap() : connection.getHeaderFields();
@ -270,7 +276,6 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
dataSpec, HttpDataSourceException.TYPE_OPEN);
}
int responseCode;
String responseMessage;
try {
responseCode = connection.getResponseCode();

View File

@ -357,6 +357,12 @@ public interface HttpDataSource extends DataSource {
*/
void clearAllRequestProperties();
/**
* When the source is open, returns the HTTP response status code associated with the last {@link
* #open} call. Otherwise, returns a negative value.
*/
int getResponseCode();
@Override
Map<String, List<String>> getResponseHeaders();
}