web-dev-qa-db-ja.com

RESTアプリからAndroid AP​​Iを呼び出す

私はAndroidが初めてです。私は実際にはスタートアップ企業で働く研修生なので、自分で物事を学ばなければなりません。チームリーダーから、RESTアプリからAndroid AP​​Iを呼び出すアプリを作成するように要求されました。彼は、1つのapi応答からステータス値を読み取り、その値を新しいアクティビティで表示するように私に求めました。私は実際に私が何をすべきかわからない。これまで、アクティビティ間で値を渡すなどの基本的なことだけを学びました。良いチュートリアルを提案するか、最初からアイデアを教えてください。

50
HeisenBerg
  1. Retrofitを統合する場合(すべての手順はここで定義されます):

私のブログにアクセスしてください: kotlineでのレトロフィット

  1. Android-async-httpライブラリを使用してください。

以下のリンクはすべてを段階的に説明しています。

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

サンプルアプリは次のとおりです。

  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

クラスを作成します:

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

呼び出し方法:

    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

        }
    });

マニフェストファイルでインターネットアクセス許可を付与してください。

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

必要に応じて、build.gradleファイルにcompile 'com.loopj.Android:android-async-http:1.4.9'Header[]およびJSONObjectcompile 'org.json:json:20160212'を追加できます。

65
Yogendra