web-dev-qa-db-fra.com

Appel de REST API à partir d'une application Android

Je suis nouveau sur Android. En fait, je suis stagiaire dans une start-up et je dois donc apprendre par moi-même. Mon chef d'équipe vient de me demander d'écrire une application pour appeler une API REST à partir d'une application Android. Il m'a demandé de lire la valeur de statut d'une réponse de l'API et de montrer sa valeur dans une nouvelle activité. En fait, je n'ai aucune idée de ce que je suis censé faire. Jusqu'à présent, je n'ai appris que des notions de base, telles que la transmission de valeurs entre les activités. Suggérez-moi un bon tutoriel ou donnez-moi une idée pour commencer.

50
HeisenBerg
  1. Si vous souhaitez intégrer Retrofit (toutes les étapes définies ici):

Allez sur mon blog: modification avec kotline

  1. Veuillez utiliser la bibliothèque Android-async-http.

le lien ci-dessous explique tout étape par étape.

http://loopj.com/Android-async-http/

Voici des exemples d'applications:

  1. http://www.techrepublic.com/blog/software-engineer/calling-restful-services-from-your-Android-app/

  2. http://blog.strikeiron.com/bid/73189/Integrate-a-REST-API-into-Android-Application-in-less-than-15-minutes

Créez une classe:

public class HttpUtils {
  private static final String BASE_URL = "http://api.Twitter.com/1/";

  private static AsyncHttpClient client = new AsyncHttpClient();

  public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.get(getAbsoluteUrl(url), params, responseHandler);
  }

  public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.post(getAbsoluteUrl(url), params, responseHandler);
  }

  public static void getByUrl(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.get(url, params, responseHandler);
  }

  public static void postByUrl(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.post(url, params, responseHandler);
  }

  private static String getAbsoluteUrl(String relativeUrl) {
      return BASE_URL + relativeUrl;
  }
}

Méthode d'appel:

    RequestParams rp = new RequestParams();
    rp.add("username", "aaa"); rp.add("password", "aaa@123");

    HttpUtils.post(AppConstant.URL_FEED, rp, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
            // If the response is JSONObject instead of expected JSONArray
            Log.d("asd", "---------------- this is response : " + response);
            try {
                JSONObject serverResp = new JSONObject(response.toString());                                                
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }                   
        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
            // Pull out the first event on the public timeline

        }
    });

Veuillez accorder une autorisation Internet dans votre fichier manifeste.

 <uses-permission Android:name="Android.permission.INTERNET" />

vous pouvez ajouter compile 'com.loopj.Android:android-async-http:1.4.9' pour Header[] et compile 'org.json:json:20160212' pour JSONObject dans le fichier build.gradle si nécessaire.

65
Yogendra