LoginSignup
6
2

More than 5 years have passed since last update.

AndroidJavaでWebAPIを接続する

Last updated at Posted at 2017-12-12

前回同様、今度はAndroidJavaでWebAPIに接続しましたので、手法を記載します。

まずURLを作る。

String型で生成します。

String urlStr = "http://hogehoge.php?";

パラメータは別の値で保持します。

String id = "1";

バックグラウンド処理にする為、以下を記載
RequestDataTask task = new RequestDataTask(activity, this);
TQProgress.showProgress(activity, activity.getString(R.string.checking_lancher));
task.execute(urlStr);

バッググラウンドで接続する

以下を記載


class RequestDataTask extends AsyncTask<String, Integer, Integer> {
        final int CONNECTION_TIMEOUT = 0;
        final int READ_TIMEOUT = 0;
        private String result = "";
        private String time;
        private String version;
        private Activity activity;
        private TopFragment topFragment;

        /**
         * コンストラクタ
         */
        public RequestDataTask(Activity _activity, TopFragment _topFragment) {
            super();
            activity = _activity;
            topFragment = _topFragment;
        }

        /**
         * バックグランドで行う処理
         */
        @Override
        protected Integer doInBackground(String... value) {
            URL url = null;
            HttpURLConnection conn = null;
            try {
                url = new URL(value[0]);
                conn = (HttpURLConnection) url.openConnection();
                conn.setConnectTimeout(CONNECTION_TIMEOUT);
                conn.setReadTimeout(READ_TIMEOUT);

                conn.setRequestMethod("GET");
                conn.connect();

                int statusCode = conn.getResponseCode();

                if(statusCode == HttpURLConnection.HTTP_OK){

                    //responseの読み込み
                    final InputStream in = conn.getInputStream();
                    String encoding = conn.getContentEncoding();
                    if(null == encoding){
                        encoding = "UTF-8";
                    }
                    final InputStreamReader inReader = new InputStreamReader(in, encoding);
                    final BufferedReader bufferedReader = new BufferedReader(inReader);
                    String line = null;
                    while((line = bufferedReader.readLine()) != null) {
                        result += line;
                    }
                    bufferedReader.close();
                    inReader.close();
                    in.close();


                }
            } catch (MalformedURLException e) {

                e.printStackTrace();
            } catch (IOException e){

            }finally {
                if (conn != null) {
                    // コネクションを切断
                    conn.disconnect();
                }
            }
            return 0;
        }

        /**
         * バックグランド処理が完了し、UIスレッドに反映する
         */
        @Override
        protected void onPostExecute(Integer res) {
            TQProgress.hideProgress();
            try {
                JSONObject json = new JSONObject(result);
               error = json.getJSONObject("ret").getString("error");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            String type = "";
            String msg = "";

            if(error.equals("1")){

                msg = activity.getString(R.string.error_msg);

            }

            if(!"".equals(msg)) {
                //ダイアログ表示
                new TQDialog(topFragment).showAlert(
                        activity,
                        type,
                        activity.getString(R.string.alert_title),
                        msg);
            }
            TQProgress.hideProgress();
        }

    }

まとめ

今回はAndroidでWebApiを呼び出し、Jsonで値を受け取り
戻って来た値によってメッセージを出す処理を作りました!

内容はまだ不透明な部分があるのでまだまだ勉強していきます!
また新しいことを学んだ時はQiitaにあげていきたいと思います。
拙い内容でしたが、これにて!

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2