I'm trying to learn Android development by creating the movies app from the Google Udacity course. In my code below upon executing urlConnection.connect(), the code automatically goes to the finally block without any errors/exceptions.
Can you please help me see what's wrong with my code? Thanks!
    public class FetchMoviesTask extends AsyncTask<Void, Void, String> {
    private final String LOG_TAG = FetchMoviesTask.class.getSimpleName();
    protected String doInBackground(Void... params) {
        String JSONResponse = null;
        //These are declared outside as they'll be used in both try and finally  blocks
        BufferedReader reader = null;
        HttpURLConnection urlConnection = null;
        try {
            //construct your URL from a URI
            Uri.Builder URIbuilder = new Uri.Builder();
            URIbuilder.scheme("http")
                    .authority("api.themoviedb.org")
                    .appendPath("3")
                    .appendPath("movie")
                    .appendPath("popular")
                    .appendQueryParameter("api_key", BuildConfig.TMDB_API_KEY);
            //instantiate URL
            URL popularURL = new URL(URIbuilder.toString());
            Log.v(LOG_TAG, "Built URL: " + popularURL.toString());
            //create and open HTTP connection
            urlConnection = (HttpURLConnection) popularURL.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.connect();
            //InputStream is needed to read the response
            //http://developer.android.com/reference/java/net/HttpURLConnection.html
            InputStream inputStream = urlConnection.getInputStream();
            if (inputStream == null) {
                Log.e(LOG_TAG, "Null input stream");
                return null; //no data returned from HTTP request
            }
            //!!want to see what InputStream looks like
            Log.v(LOG_TAG, "inputStream.toString(): " + inputStream.toString());
            //BufferedReader is used to wrap a Reader and buffer its input
            //to read InputStream, a "reader" is required and that's InputStreamReader (duh)
            //http://developer.android.com/reference/java/io/BufferedReader.html
            reader = new BufferedReader(new InputStreamReader(inputStream));
            //!!want to see what BufferedReader looks like
            Log.v(LOG_TAG, "reader.toString(): " + reader.toString());
            //replaced StringBuffer w/ StringBuilder. will it work?
            StringBuilder builder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                // Since it's JSON, adding a newline isn't necessary (it won't affect parsing)
                // But it does make debugging a *lot* easier if you print out the completed
                // buffer for debugging.
                builder.append(line + "\n");
            }
            if (builder.length() == 0) return null; //empty stream. no point in parsing
            JSONResponse = builder.toString();
            Log.v(LOG_TAG, "JSON Response: " + JSONResponse);
            return parseJSON(JSONResponse);
        } catch (IOException e) {
            Log.e(LOG_TAG, "Error", e);
            return null;
        } catch (JSONException e) {
            Log.e(LOG_TAG, "Error parsing JSON", e);
            return null;
        } catch (Error e) {
            Log.e(LOG_TAG, "Unknown error", e);
        } finally {
            if (urlConnection != null) urlConnection.disconnect();
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    Log.e(LOG_TAG, "Error closing stream", e);
                }
            }
            //will only be triggered if there's an error getting/parsing data
            return null;
        }
    }
 
     
    