簡體   English   中英

將 Android 應用程序連接到 Github API

[英]Connect Android App to Github API

我已經檢查了一段時間,但仍然找不到有關如何將我的 android 應用程序連接到 Github API 的信息。 我已經注冊了它,也有一個令牌,閱讀了端點和所有內容,但不知道要在哪里使用令牌。 有人可以給我一個提示嗎?

我使用下面的代碼在我的 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 應用中使用 GitHub 搜索 repo API。 鏈接: https ://github.com/kvipul/Search-GitHub-Repo

GitHub API 提供了許多過濾器。 查看 GitHub 搜索 API 的文檔以獲取更多詳細信息 - https://developer.github.com/v3/search/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM