2015-03-30 20 views
29

Tôi mới sử dụng Android. Tôi thực sự là một thực tập sinh làm việc trong một công ty khởi nghiệp, vì vậy tôi đã tự mình học hỏi mọi thứ. Trưởng nhóm của tôi vừa yêu cầu tôi viết một ứng dụng để gọi API REST từ một ứng dụng Android. Anh ấy yêu cầu tôi đọc giá trị trạng thái từ một phản hồi api và hiển thị giá trị của nó trong một hoạt động mới. Tôi thực sự không biết mình phải làm gì. Cho đến nay tôi chỉ học được những điều cơ bản như truyền các giá trị giữa các hoạt động. Hãy gợi ý cho tôi một hướng dẫn hay, hoặc cho tôi một ý tưởng để bắt đầu.Gọi API REST từ ứng dụng android

+0

Tìm kiếm 'thư viện http android' trong hầu hết các trường hợp, chúng có các ví dụ tốt đẹp –

+0

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

Trả lời

40

Vui lòng sử dụng thư viện android-async-http.

liên kết dưới đây giải thích mọi thứ từng bước.

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

Dưới đây là các ứng dụng mẫu:

  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

Tạo một lớp:

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

Phương pháp Call:

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 

     } 
    }); 

hãy cấp phép Internet trong file manifest của bạn.

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

bạn có thể thêm compile 'com.loopj.android:android-async-http:1.4.9' cho Header[]compile 'org.json:json:20160212' cho JSONObject trong tập tin build.gradle nếu cần thiết.

+0

Cảm ơn bạn. liên kết strikeon có vẻ dễ dàng, tôi sẽ thử rằng – HeisenBerg

+0

chào mừng @HeisenBerg :) – Yogendra

+0

hướng dẫn này sử dụng phương thức http get(). nếu tôi muốn sử dụng post() thì sao? – HeisenBerg

Các vấn đề liên quan