public ArrayList<Course> getCourseList(String COURSE_LIST) throws Exception { ArrayList<Course> courses = new ArrayList<Course>(); UniversityFacadeREST universityREST = new UniversityFacadeREST(); HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(COURSE_LIST); HttpResponse httpResponse = httpClient.execute(httpGet); httpResponse.setEntity(httpResponse.getEntity()); HttpEntity httpEntity = httpResponse.getEntity(); if (httpEntity != null) { InputStream inputStream = httpEntity.getContent(); String jsonFile = convertStreamToString(inputStream); JSONObject json = new JSONObject(jsonFile); // Courses are called topics for Coursera JSONObject courselist = json.getJSONObject("topics"); Iterator<?> keys = courselist.keys(); // Iterate through each key while (keys.hasNext()) { String key = (String) keys.next(); if (courselist.get(key) instanceof JSONObject) { JSONObject coursecode = (JSONObject) courselist.get(key); Course course = new Course(); // To ensure the id is the same as Coursera, // so that it can be linked later on to the // university course.setId(10 + Integer.parseInt(key)); course.setName(coursecode.getString("name")); course.setCode(coursecode.getString("short_name")); course.setIconUrl(coursecode.getString("large_icon")); course.setLanguage(coursecode.getString("language")); JSONArray universityIdList = coursecode.getJSONArray("unis"); University newuni = new University(10 + universityIdList.getInt(0)); course.setIdUniversity(newuni); courses.add(course); } } } return courses; }