简体   繁体   English

将 Android 应用程序连接到 Github API

[英]Connect Android App to Github API

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.我已经检查了一段时间,但仍然找不到有关如何将我的 android 应用程序连接到 Github API 的信息。 I had it registered, had a token as well, read about the endpoints and everything, but cannot understand where the token to be used.我已经注册了它,也有一个令牌,阅读了端点和所有内容,但不知道要在哪里使用令牌。 May somebody give me a hint?有人可以给我一个提示吗?

I've used below code to connect to GitHub Search Repo API in my android app.我使用下面的代码在我的 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();
            }

Check out my GitHub project to get a complete idea on how to use GitHub search repo API in Android App.查看我的 GitHub 项目,全面了解如何在 Android 应用中使用 GitHub 搜索 repo API。 Link: https://github.com/kvipul/Search-GitHub-Repo链接: https ://github.com/kvipul/Search-GitHub-Repo

There are many filters that GitHub API provides. GitHub API 提供了许多过滤器。 Check out the Documentation of GitHub search API for more details - https://developer.github.com/v3/search/查看 GitHub 搜索 API 的文档以获取更多详细信息 - https://developer.github.com/v3/search/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM