Connect Android App to Github API

后端 未结 1 1869
梦如初夏
梦如初夏 2021-01-14 17:25

I\'ve been checking around for some time, but still can\'t find information on this how exactly to connect my android app to the Github API. I had it registered, had a token

相关标签:
1条回答
  • 2021-01-14 18:13

    I've used below code to connect to GitHub Search Repo API in my android app.


    //Method 1: To Authorize API access for all HTTP call
                //Uncomment this part of code and input your username and password
    //            Authenticator.setDefault(new Authenticator() {
    //                @Override
    //                protected PasswordAuthentication getPasswordAuthentication() {
    //                    return new PasswordAuthentication("username", "password".toCharArray());
    //                }
    //            });
                HttpURLConnection urlConnection;
                URL url;
                InputStream inputStream;
    
                try{
                    url = new URL("https://api.github.com/search/repositories?q="+"searchText");
                    urlConnection = (HttpURLConnection) url.openConnection();
    
    //Method 2: To Authorize API access while making HTTP request
    
                    //Uncomment this part of code and input your username and password
    //                String basicAuth = "Basic "+Base64.encodeToString("username:password".getBytes(), Base64.NO_WRAP);
    //                urlConnection.setRequestProperty ("Authorization", basicAuth);
    
                    //set request type
                    urlConnection.setRequestMethod("GET");
    
                    //if you uncomment the following line GitHub API will not respond
    //                urlConnection.setDoOutput(true);
    
                    urlConnection.setDoInput(true);
                    urlConnection.connect();
                    //check for HTTP response
                    int httpStatus = urlConnection.getResponseCode();
    
                    //if HTTP response is 200 i.e. HTTP_OK read inputstream else read errorstream
                    if (httpStatus != HttpURLConnection.HTTP_OK) {
                        inputStream = urlConnection.getErrorStream();
                    //print GitHub api hearder data
                        Map<String, List<String>> map = urlConnection.getHeaderFields();
                        System.out.println("Printing Response Header...\n");
                        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
                            System.out.println(entry.getKey()
                                    + " : " + entry.getValue());
                        }
                    }
                    else {
                        inputStream = urlConnection.getInputStream();
                    }
    
                    //read inputstream
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                    String temp,response="";
                    while((temp = bufferedReader.readLine())!=null){
                        response+=temp;
                    }
    
                    //GitHub api has limit to access over http. 
                    //Api rate limit is 10req/min for unauthenticated user and 30req/min is for authenticated user
                    boolean apiLimitExceeded = "false";
                    if(response.contains("API rate limit exceeded")){
                        apiLimitExceeded =true;
                    }else {
                        //convert data string into JSONObject
                        JSONObject obj = (JSONObject) new JSONTokener(response).nextValue();
                        JSONArray items = obj.getJSONArray("items");
    
                        //total result count and result status
                        total_count = obj.getString("total_count");
                        incomplete_results = obj.getString("incomplete_results");
                    }
    
                    urlConnection.disconnect();
                } catch (MalformedURLException | ProtocolException | JSONException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    

    Check out my GitHub project to get a complete idea on how to use GitHub search repo API in Android App. Link: https://github.com/kvipul/Search-GitHub-Repo

    There are many filters that GitHub API provides. Check out the Documentation of GitHub search API for more details -https://developer.github.com/v3/search/

    0 讨论(0)
提交回复
热议问题