На какой линии находится NPE? Если ответ! = HttpURLConnection.HTTP_OK, то openHttpConnection вернет ноль, и вы получите NPE для in.read (Data). Возможно, вы захотите сделать что-то подобное.
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
} else {
throw new IOException("Bad Response Received");
}
А также вам не нужен блок try и catch в openHttpConnection, просто позвольте ему генерировать IOException и обрабатывать его, как в приведенном выше коде.
Возможно, будет удобнее использовать классы Apache HttpClient в SDK. Нечто подобное.
HttpClient client = AndroidHttpClient.newInstance("myUserAgent");
HttpGet httpGet = new HttpGet("http://epubreader.feathersoft.net
/public/json/books.json");
HttpResponse response = client.execute(httpGet);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream inputStream = response.getEntity().getContent();
// read from stream
}
Вы также можете использовать execute с анонимным ResponseHandler, чтобы ваш метод возвращал List в случае успеха.