FastJSon 과 AsyncHttpCLient
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onStart() {
// called before request is started
}
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
// called when response HTTP status is "200 OK"
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
// called when response HTTP status is "4XX" (eg. 401, 403, 404)
}
@Override
public void onRetry(int retryNo) {
// called when request is retried
}
});
UI 스 레 드 밖에서 만 발생 합 니 다. callback 은 스 레 드 를 만 드 는 중 에 발생 합 니 다. Android 의 Handler 메시지 전송 체 제 를 사용 합 니 다. AsyncHttpClient 를 Service 나 백 엔 드 스 레 드 에 적용 할 수도 있 습 니 다. 라 이브 러 리 코드 는 실행 중인 context 를 자동 으로 식별 합 니 다. github 에서 불 러 오 는 주소:https://github.com/loopj/android-async-http 라 이브 러 리 의 size 는 매우 작고 모든 것90kb 만 이 비동기 http 요청 을 보 내 고 익명 의 callback 대상 에서 response 를 처리 합 니 다. http 요청 은 UI 스 레 드 를 제외 하고 내부 에 스 레 드 풀 로 동시 요청 을 처리 합 니 다. 자세 한 내용 은 어머니 를 도 울 수 있 습 니 다.
또 하 나 는 제 이 슨 의 해석 입 니 다. 물론 sdk 에 있 는 JSONarray Json Object 도 있 고 gs on 의 프레임 워 크 도 사용 한 적 이 있 습 니 다. 이 과정 에서 가장 좋 은 것 은 알 리 바 바 의 fastJosn 입 니 다. Base 에는 JSonUtil 의 도구 류 가 통합 되 어 있 습 니 다. 대상 제 이 슨 등의 상호 전환 을 신속하게 실현 하고 상하 코드 를 직접 사용 할 수 있 습 니 다.
public final class JsonUtil {
private static String TAG = "FastJson";
public static boolean isSuccess(String jsonString) {
JSONObject json;
boolean flag = false;
try {
json = new JSONObject(jsonString);
flag = json.getBoolean("result");
} catch (JSONException e) {
e.printStackTrace();
}
return flag;
}
public static String getArrayString(String jsonString, String key) {
String value = "";
JSONObject json;
try {
json = new JSONObject(jsonString);
value = json.getJSONArray(key).toString();
} catch (JSONException e) {
e.printStackTrace();
}
return value;
}
public static String convertObjectToJson(Object o) {
SerializerFeature[] features = { SerializerFeature.QuoteFieldNames,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullNumberAsZero,
SerializerFeature.WriteNullBooleanAsFalse,
SerializerFeature.WriteSlashAsSpecial,
SerializerFeature.BrowserCompatible,
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteDateUseDateFormat };
try {
Log.d(TAG, JSON.toJSONString(o, features));
return JSON.toJSONString(o, features);
} catch (Exception e) {
Log.e(TAG, e.toString());
return "";
}
}
public static <T> T convertJsonToObject(String json, Class<T> clazz) {
try {
return JSON.parseObject(json, clazz);
} catch (Exception e) {
Log.e(TAG, e.toString());
Log.e("merror", e.toString());
return null;
}
}
public static <T> List<T> convertJsonToList(String json, Class<T> clazz) {
try {
return JSON.parseArray(json, clazz);
} catch (Exception e) {
Log.e(TAG, e.toString());
System.out.println(e.toString());
return null;
}
}
}
여기까지 만 해도 끝 이 라 고 생각 하 십 니까? 물론 아 닙 니 다. 더 쉬 울 수 있 습 니 다. 다음 절 에 서 는 자신 이 봉 인 된 CustomAsyncHttp Client CustomAsyncResponsehandler 를 소개 합 니 다. 이 두 프레임 워 크 를 통합 시 키 고 이전 코드 를 먼저 소개 합 니 다.
네트워크 작업 의 로그 인 방법:
public void login(final String userName, final String password, final CustomAsyncResponehandler handler) {
RequestModel requestModel = new RequestModel();
RequestParams params = new RequestParams();
params.put("userName", userName);
params.put("password", password);
requestModel.setParams(params);
requestModel.setCls(User.class);
requestModel.setShowErrorMessage(true);
requestModel.setUrl(Urls.userLogin);
httpClient.post(requestModel, new CustomAsyncResponehandler() {
@Override
public void onSuccess(ResponeModel baseModel) {
super.onSuccess(baseModel);
if (baseModel != null && baseModel.isStatus()) {
AppContext.currentUser = (User) baseModel.getResultObj();
AppContext.currentUser.setUserName(userName);
if (userDao != null) {
userDao.insert(AppContext.currentUser);
}
}
handler.onSuccess(baseModel);
}
});
}
비 즈 니스 층 에 서 는 json 의 분석 코드 가 보이 지 않 습 니 다. CustomAsyncHttpClient 를 통 해 대상 을 직접 받 아 조작 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.