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アプリに精通している人ともっと知り合いたいです。