HttpResponse.java
package gov.usgs.earthquake.aws;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import javax.json.Json;
import javax.json.JsonObject;
import gov.usgs.util.StreamUtils;
/**
* Utility class to hold HttpURLConnection and parse JSON response data.
*/
public class HttpResponse {
/** Variable to hold HttpURLConnection */
public final HttpURLConnection connection;
/** Variable for holding IOExceptions */
public final IOException readException;
/** Varialbe to hold URL response */
public final byte[] response;
/**
* Reads response from HttpUrlConnection.
* @param connection HttpURLConnection to read
* @throws Exception exception if errors
*/
public HttpResponse(final HttpURLConnection connection) throws Exception {
this.connection = connection;
IOException exception = null;
byte[] data = null;
try (final InputStream in = connection.getInputStream()) {
data = StreamUtils.readStream(in);
} catch (IOException e) {
exception = e;
try (final InputStream err = connection.getErrorStream()) {
data = StreamUtils.readStream(err);
} catch (IOException e2) {
// ignore
}
} finally {
this.response = data;
this.readException = exception;
}
}
/**
* Parse response into JsonObject.
*
* @return parsed JsonObject
* @throws Exception if unable to parse.
*/
public JsonObject getJsonObject() throws Exception {
return Json.createReader(new ByteArrayInputStream(response)).readObject();
}
}