728x90

android 의 비동기 HTTP 라이브러리 Asynchronous Http Client 에 대한 자료는

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

http://yasirameen.com/2016/05/asynchronous-http-client-android/

https://java2android1108.blogspot.com/2018/01/android-web-services-using-android.html

를 참조하면 기본적인 사용법은 알 수 있다.

한글 설명은 http://edoli.tistory.com/91 를 참조하면 된다.

예제 설명이 잘된 자료는 http://yasirameen.com/2016/05/asynchronous-http-client-android/ 다.


아래 예제는 자동 로그인하는 Intro.java 코드다. 사용해보니 코드가 심플하고 편한 거 같다.

import cz.msebera.android.httpclient.Header;

public class Intro extends AppCompatActivity {
    Boolean loginChecked;
    public SharedPreferences settings;
    String loginID;
    String loginPW;
    String getDeviceID; // 스마트기기의 장치 고유값

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intro);

        // 자동 로그인 체크 검사
        settings = getSharedPreferences("settings", Activity.MODE_PRIVATE);
        loginChecked = settings.getBoolean("LoginChecked", false);
        if (loginChecked) {
            loginID = settings.getString("loginID", "");
            loginPW = settings.getString("loginPW", "");
            if(loginID != null && !loginID.isEmpty() && loginPW != null && !loginPW.isEmpty()){
                AsyncHttpComm(loginID,loginPW);
            } else {
                startActivity(new Intent(getApplication(), Login.class));
                finish();
            }
        } else{
            startActivity(new Intent(getApplication(), Login.class));
            finish();
        }
    }

    public void AsyncHttpComm(String userID, String userPW){
        // 단말기의 ID 정보를 얻기 위해서는 READ_PHONE_STATE 권한이 필요
        TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        if (mTelephony.getDeviceId() != null){
            getDeviceID = mTelephony.getDeviceId();  // 스마트폰 기기 정보
        } else {
            getDeviceID = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
        }

        RequestParams params = new RequestParams();
        params.put("loginID", Value.encrypt(loginID));
        params.put("loginPW", Value.encrypt(loginPW));
        params.put("deviceID", getDeviceID);


        AsyncHttpClient client = new AsyncHttpClient();
        client.post(Value.IPADDRESS + "/loginChk.php", params, new TextHttpResponseHandler() {

            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                System.out.println("statusCode : " + statusCode);
                System.out.println("responseString : " + responseString);
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
                System.out.println("Response Value : " + responseString);
                if(Integer.parseInt(responseString) > 0){ // 로그인 정보 일치하면 uid 정보를 받음
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("idx", responseString);
                    Toast.makeText(Intro.this,"로그인 성공", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(getApplication(), MainActivity.class));
                    finish(); // 현재 Activity 를 없애줌

                } else {
                    startActivity(new Intent(getApplication(), Login.class));
                    finish();
                }
            }
        });
    }

}


Android Studio 3.X 버전에서는 코드 자동완성이 잘 되는데 2.3.3 에서는 코드 자동완성이 잘 안된다.

관련 헤더 정보와 코드를 적어둔다.

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import org.json.JSONObject;

import cz.msebera.android.httpclient.Header;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 서버에서 데이터 가져오기
        getJSONFromAsyncHttpClient();

    }

    public void getJSONFromAsyncHttpClient(){
        RequestParams params = new RequestParams();
        params.put("key", "value");
        params.put("more", "data");
        AsyncHttpClient client = new AsyncHttpClient();
        String url = Value.IPADDRESS + "/orgJSONList.php";
        client.get(url, params, new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                // Handle resulting parsed JSON response here
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String res, Throwable t) {

            }
        });
    }

} 


2019.7.20일자로 1.4.10 버전이 나왔다.

https://loopj.com/android-async-http/

728x90
블로그 이미지

Link2Me

,