将Android App连接到Github API

时间:2016-09-14 15:58:17

标签: android github-api

我一直在检查一段时间,但仍无法找到有关这个如何将我的Android应用程序连接到Github API的信息。我有它注册,有一个令牌,阅读有关端点和一切,但无法理解使用的令牌在哪里。可能有人给我一个暗示吗?

1 个答案:

答案 0 :(得分:1)

我已经使用以下代码连接到我的Android应用程序中的GitHub Search Repo API。

//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();
            }

查看我的GitHub项目,以全面了解如何在Android App中使用GitHub搜索回购API。 链接:https://github.com/kvipul/Search-GitHub-Repo

GitHub API提供了许多过滤器。有关详细信息,请查看GitHub搜索API的文档 - https://developer.github.com/v3/search/