Blog

Android :Leximi i te dhenave nga REST API

Sep 16 2016

Android :Leximi i te dhenave nga REST API

Shumica prej nesh kane zhvilluar aplikacione qe lexojne te dhena nga interneti dhe gjithashtu i procesojne ato. Gjithashtu mund te kemi zhvilluar edhe aplikacione permbajtja e te cileve eshte statike, por ne vend te kesaj ne do te sugjeronim te zhvillojme aplikacion permbajtja e te cileve do te ishte e ndryshme varesishte nga te dhenat e nevojshme.

Kjo mund te duket disi e veshtire, por gjate ketij mesimi do te shofim si mund te perdorim metodat qe na ve ne dispozicion Libraria e Android (Android SDK) per tu lidhur me web serverat dhe duke bashkvepruar me ata nepermjet REST API.

Aktivizimi i Internet Access

Per shkak se ne do te perdorim REST API metoden do duhet te kemi qasje ne internet dhe kjo nuk mund te realizohet nese nuk i japim leje aplikacionit te qaset ne intener. Perpara se te fillojme te shkruajm kodin per leximin dhe perpunimin e te dhenave fillimisht duhet ti japim akses aplikacionit te qaset ne internet duke shtuar kete ne AndroidManifest.xml file.

Krijimi i nje funskioni ne prapavije

Platforma e Android-it nuk lejon qe te ekzekutohen operacione ne rrjet ne aktivitetin kryesor dhe per kete na duhet qe te krijojme nje funksion ne prapavije qe do ta kryej kete.

Kete do ta realizojme duke perdorur metodhen execute() te klases AsyncTask, metoda execute() kerkon nje object Runnable() dhe per kete kodi do te duket keshtu :

 AsyncTask.execute(new Runnable() {

    @Override

    public void run() {

        // Ketu duhet te shkruhet kodi per aplikacionin

    }

});

Krijimi i lidhjes HTTP

Duke perdorur metodhen openConnection() te klases URL lehtesisht mund te krijohet nje lidhje me te dhenat. Varesisht nga menyra e lidhjes HTTP ose HTTPS me te dhenat vlerat qe kthehen nga openConnection() jane instance e HttpURLConnection() ose HttpsURLConnection().

Kodi me posht ben lidhjen me GitHub API :


URL githubEndpoint = new URL("https://api.github.com/");

HttpsURLConnection myConnection = (HttpsURLConnection) githubEndpoint.openConnection();


Leximi i te dhenave

Pasi te kryhet lidhja me web serverin do te marrim si pergjigje nje kod qe do te na tregoj nese lidhja eshte kryer me suskes dhe si rezultat kemi te dhena qe lexohen nga serveri.

Per te lexuar kodin qe kthehet nga lidhja perdorim metodhen getResponseCode()

if (myConnection.getResponseCode() == 200) {

    // Ne rast se rezultati eshte i suksesshem

} else {

    // Ne rast se rezultati ka ndonje gabim

}

Ne rast se nuk kemi ndoni error atehere lexojme referencen e te dhenave qe vijne nga lidhja duke perdorur metoden getInputStream()

InputStream responseBody = myConnection.getInputStream();

Shumica e te dhenave qe kthehen nga web serveret jane te tipit JSON dhe per kete ne ju sugjerojme te perdorni nje objekt te tipit InputStreamReader.

InputStreamReader responseBodyReader =  new InputStreamReader(responseBody, “UTF-8");

Procesimi i JSON te dhenave

Libraria e Android posedon nje klase te tipit JsonReader, qe e bene me te lehte procesimin e te dhenave JSON. Ne mund te krijojme nje instance te JsonReader duke ja derguar InputStreamReader si objekt.

JsonReader jsonReader = new JsonReader(responseBodyReader);

Json te dhenat qe kthehen ne rastin tone jane te strukturuara ne kete forme : 

{

  "current_user_url": "https://api.github.com/user",

  "current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",

  "authorizations_url": "https://api.github.com/authorizations",

  "code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",

  "emails_url": "https://api.github.com/user/emails",

  "emojis_url": "https://api.github.com/emojis",

  "events_url": "https://api.github.com/events",

  "feeds_url": "https://api.github.com/feeds",

  "followers_url": "https://api.github.com/user/followers",

  "following_url": "https://api.github.com/user/following{/target}",

  "gists_url": "https://api.github.com/gists{/gist_id}",

  "hub_url": "https://api.github.com/hub",

  "issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",

  "issues_url": "https://api.github.com/issues",

  "keys_url": "https://api.github.com/user/keys",

  "notifications_url": "https://api.github.com/notifications",

  "organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",

  "organization_url": "https://api.github.com/orgs/{org}",

  "public_gists_url": "https://api.github.com/gists/public",

  "rate_limit_url": "https://api.github.com/rate_limit",

  "repository_url": "https://api.github.com/repos/{owner}/{repo}",

  "repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",

  "current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",

  "starred_url": "https://api.github.com/user/starred{/owner}{/repo}",

  "starred_gists_url": "https://api.github.com/gists/starred",

  "team_url": "https://api.github.com/teams",

  "user_url": "https://api.github.com/users/{user}",

  "user_organizations_url": "https://api.github.com/user/orgs",

  "user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",

  "user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"

}

Nga Json te dhenat me siper per te nxjerrur rezulttin e variables organization_url perdorim kodin e meposhtem.

jsonReader.beginObject(); 

while (jsonReader.hasNext()) { // Cikel neper te gjitha variablet

    String key = jsonReader.nextName(); // Lexojme variablen e radhes

    if (key.equals("organization_url")) { // Shohim nese variabla eshte organization_url

        // Lexojme vleren te tipit String

        String value = jsonReader.nextString();

        break; // Nderpresim Ciklin

    } else {

        jsonReader.skipValue(); // Anashkalojme te dhenat

    }

}

Pasi te lexojme te dhenat e deshiruara nga JSON, duhet te nderpresim procesimin e JSON te dhenave duker perdorur metoden close()  te klases JsonReader.

jsonReader.close();

Gjithashtu duhet te nderpresim edhe lidhjen me web serverin duker perdorur metoden disconnect().

myConnection.disconnect();


Gjate ketij mesimi, mesuat se si te beni lidhjen me web serverin dhe gjithashtu te procesoni te dhenat JSON qe kthehen nga web serveri.

Online mund te gjeni me qindra web server qe ofrojne te dhena te tipit JSON falas dhe me ato mund te krijoni aplikacione te avancuara qe mund te jene te suksesshem ne tregun e aplikacioneve mobile.

  • Enter your Name & E-Mail

  • Discuss with our team

  • Receive a good support