URL is a specific class of Uri. Use the following function to compile a valid URL. HttpURLConnection will require this when making a connection.
Method to build URLfinal static String BASE_URL = "https://api.github.com/search/repositories"; // Query the GitHub repositories final static String PARAM_QUERY = "q"; final static String PARAM_SORT = "sort"; final static String sortBy = "stars"; // Sorted by the number of stars the repo has public static URL buildUrl(String searchQuery) { Uri builtURI = Uri.parse(BASE_URL) .buildUpon() .appendQueryParameter(PARAM_QUERY, searchQuery) .appendQueryParameter(PARAM_SORT, sortBy) .build(); try { URL url = new URL(builtURI.toString()); Log.d("buildUrl produced URL ", url.toString()); // Produces URL: https://api.github.com/search/repositories?q=android&sort=stars return url; } catch (MalformedURLException e) { e.printStackTrace(); Log.d("buildUrl", "Exception thrown"); } return null; }A typical helper method for fetching the results of the query based on the URL.
public static String getResponseFromHttpUrl(URL url) throws IOException { HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { InputStream in = urlConnection.getInputStream(); Scanner scanner = new Scanner(in); scanner.useDelimiter("\\A"); // \A represents the beginning of the stream. Forces the scanner to read the entire contents of the stream // It buffers the data and also converts the stream from UTF-8 (JSON/JS) to UTF-16 (which Android uses) boolean hasInput = scanner.hasNext(); if (hasInput) { return scanner.next(); } else { return null; } } finally { urlConnection.disconnect(); } }ud851-Exercises-student\Lesson02-GitHub-Repo-Search\T02.06-Exercise-AddPolish
