LoginSignup
7
14

More than 5 years have passed since last update.

AndroidのHttpURLConnectionでjsonの取得

Posted at

AndroidでHttpURLConnectionを用いたjson(XML)取得

今回はHttpURLConnectionを用いて、サーバからデータの取得を書いてみようと思います。

HttpURLConnection

HttpURLConnectionはAndroidアプリ開発におけるHTTP周りのクラスです。
では、簡単にHTTP通信の接続から


public String getGET() throws IOException {
        final int CONNECTION_TIMEOUT = 30 * 1000;
        final int READ_TIMEOUT = 30 * 1000;

        URL url = new URL("あなたのhttp_urlを代入してください");
        HttpURLConnection 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){
            StringBuilder result = null;
            //responseの読み込み
            final InputStream in = conn.getInputStream();
            final String encoding = conn.getContentEncoding();
            final InputStreamReader inReader = new InputStreamReader(in, encoding);
            final BufferedReader bufferedReader = new BufferedReader(inReader);
            String line = null;
            while((line = bufferedReader.readLine()) != null) {
                result.append(line);
            }
            bufferedReader.close();
            inReader.close();
            in.close();

            return result.toString();
        }

        return null;
    }

また、以下のタイムアウトを設定することで自動で接続を切断してくれます。

conn.setConnectTimeout(CONNECTION_TIMEOUT);

Cookieの情報を加えたい場合は以下を入れてください。

conn.setRequestProperty("Cookie", cookies);

InputStreamからテキストを読み込めば、jsonやxmlなどのデータ取得できます。

次に、このHttpURLConnectinoを実行するために、AsyncTaskを利用します。

HttpTask.java
public class TestHttp extends AsyncTask<Void,Void,Void> {
    @Override
    protected Void doInBackground(Void... params) {
        try {
            getGET();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

あとは以下を実行したいところに記述するだけです。

HttpTask httpTask = new HttpTask();
httpTask.execute();

最後に

Androidアプリに精通している人ともっと知り合いたいです。

7
14
1

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
7
14