Android Http에서 데이터 가져오기

9555 단어 Android

HTTP 통신


이전 단추에서 텍스트 일부를 수정한 다음
HTTP 통신을 통해 얻은 텍스트로 변경합니다.
안드로이드 버튼을 누를 때의 동작

이루어지다


우선 Manifest에 인터넷 허가 설정을 추가합니다.
AndroidManifest.부분 발췌문
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.qiita.qiita">

    <uses-permission android:name="android.permission.INTERNET" />
안드로이드의 주 스레드에서 HTTP 통신을 실행할 때
N e t work OnMainThereadException 의 예외가 발생합니다.
따라서 다른 라인에서 실행할 필요가 있다.
이번에 AsyncTask 를 상속하고 구현합니다.

AsyncTask의 주요 프로세스


위에서 순서대로 불러내다.

・onPreExecute()


주 스레드에서 실행되는 비동기 예처리

・doInBackground()


비동기적으로 처리하고자 하는 내용을 기술하다.abstract 방법이기 때문에 반드시 설치해야 합니다.

・onProgresssUpdate()


주 라인에서 운행하다.
doInBackground () 에서publishProgress () 를 호출할 때 처리합니다.
진행 표시줄에 진행 상황 등을 표시할 때 사용합니다.

・onPostExecute()


DoInBackground 메서드를 실행한 후 주 스레드에서 실행합니다.
doInBackground 메서드의 반환 값을 메서드의 매개변수로 적용합니다.
AsyncTask의 매개 변수는 "doInBackground의 매개 변수, onProgressiUpdate의 매개 변수, onPostExecute의 매개 변수"입니다.
여기 있다
DoInBackground에서 매개변수의 URL을 사용하여 HTTP 요청을 실행하고 결과를 반환 값으로 사용합니다.
onPostExecute를 사용하여 반환 값을 TextView로 설정합니다.
AsyncHttpRequest.java
package com.example.qiita.qiita;

import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


public class AsyncHttpRequest extends AsyncTask<String, Void, String> {
    private Activity mActivity;

    public AsyncHttpRequest(Activity activity) {
        mActivity = activity;
    }

    @Override
    protected String doInBackground(String... params) {
        HttpURLConnection connection = null;
        StringBuilder sb = new StringBuilder();
        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            InputStream is = connection.getInputStream();

            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String line = "";
            while ((line = reader.readLine()) != null)
                sb.append(line);
            is.close();

        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            connection.disconnect();
        }
        return sb.toString();
    }

    public void onPostExecute(String string) {
        ((TextView)mActivity.findViewById(R.id.textview)).setText(string);
    }
}
Activity가 마지막으로 텍스트를 변경한 청중
AsyncHttpRequest 를 호출합니다.(Hello world: 반환만 가능한 URL을 매개 변수로 지정)
MainActivty.java

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            new AsyncHttpRequest(self).execute("https://xxxxxxx.herokuapp.com/xxxx/");
    }
});

Developers


・AsyncTask
https://developer.android.com/reference/android/os/AsyncTask.html

좋은 웹페이지 즐겨찾기