2015-03-30 12 views
29

Ben android için yeni. Aslında bir başlangıç ​​şirketinde çalışan bir stajyerim, bu yüzden işleri kendim öğreniyorum. Ekip liderim, bir Android uygulamasından bir REST API'sini çağırmak için bir uygulama yazmamı istedi. Durum değerini bir api yanıtından okumamı ve yeni bir etkinlikte değerini göstermemi istedi. Aslında ne yapmam gerektiğini bilmiyorum. Şimdiye kadar sadece aktiviteler arasında değerleri geçmek gibi temel şeyler öğrendim. Lütfen bana iyi bir öğretici öner ya da başlamak için bir fikir ver.Bir android uygulamasından REST API çağırma

+0

Çoğu durumda android http kütüphanesi için aralar güzel örnekler var –

+0

http://www.androidhive.info/2014/01/how-to-create-rest-api-for-android-app-using- php-slim-ve-mysql-day-12-2/ –

cevap

40

Lütfen android-async-http kütüphanesini kullanın.

aşağıdaki bağlantı, her şeyi adım adım açıklamaktadır.

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

İşte örnek uygulamalar şunlardır:

  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

bir sınıf oluşturun:

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; 
    } 
} 

Çağrı Yöntemi:

RequestParams rp = new RequestParams(); 
    rp.add("username", "aaa"); rp.add("password", "[email protected]"); 

    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 

     } 
    }); 

Manifest'inizde dosyasında internet izin verin. Gerekirse

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

Eğer build.gradle dosyasında JSONObject için Header[] ve compile 'org.json:json:20160212' için compile 'com.loopj.android:android-async-http:1.4.9' ekleyebilir.

+0

Teşekkür ederim. strikeon bağlantısı kolay görünüyor, bu – HeisenBerg

+0

hoş geldiniz @HeisenBerg :) – Yogendra

+0

bu öğretici http get() yöntemi kullanır. post() 'ı kullanmak istersem ne olur? – HeisenBerg