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/