Volley 가 요청 한 간단 한 패키지 및 application / json 데이터 요청
11245 단어 AndroidVolleyapplicationjson
1. 첫 번 째, request 계승, request 사용자 정의
여기 서 우리 가 주목 해 야 할 것 은 주로 두 가지 방법 이 있다.
첫 번 째 는 parseNetworkResponse 입 니 다. 분명 한 것 은 네트워크 가 되 돌아 오 는 바 이 너 리 데 이 터 를 우리 가 필요 로 하 는 자바 실체 류 로 분석 해 야 합 니 다. 이 방법 을 호출 할 때 서브 스 레 드 에서 실 행 됩 니 다. 이 분석 데 이 터 는 인터페이스 가 끊 기 는 것 을 피 할 수 있 습 니 다.
두 번 째 는 deliverResponse 입 니 다. 여기 서 결과 데 이 터 를 한 번 에 배포 할 수 있 습 니 다. 이 수 ui 스 레 드 는 실 행 됩 니 다. 우 리 는 여기 서 네트워크 가 돌아 온 결 과 를 통일 적 으로 걸 러 낼 수 있 습 니 다. 예 를 들 어 로그 인 이 효력 을 잃 었 습 니 다. 이것 은 모든 인터페이스 에서 돌아 올 수 있 습 니 다. 여기 서 걸 러 내 면 작업량 을 줄 일 수 있 습 니 다. 끊 을 필요 가 없 으 면 listener 의 onResponse 를 호출 하여 결 과
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
T t = null;
if (response.statusCode == 200) {
try {
String c = response.headers.get("set-Cookie");
if (c != null)
cookie = response.headers.get("set-Cookie");
String json = new String(response.data,
HttpHeaderParser.parseCharset(response.headers, Constant.CHARSET));
L.e(" json :", json + "");
JSONObject root = new JSONObject(json);
errorCode = root.getInt("errorCode");
massage = root.getString("massage");
if (errorCode == RESPONSE_CODE_SUCCEED && (entyty != null || type != null)) {
String entityJson = root.getString("entity");
t = JsonUtils.getGson().fromJson(entityJson, entyty != null ? entyty : type);
}
} catch (JSONException | UnsupportedEncodingException e) {
e.printStackTrace();
return Response.error(new ParseError());
}
return Response.success(t, HttpHeaderParser.parseCacheHeaders(response));
} else {
L.i("GsonRequest", " ,errorCode:" + response.statusCode);
return Response.error(new NetworkError(response));
}
}
@Override
protected void deliverResponse(T response) {
switch (errorCode) {
case RESPONSE_CODE_LOGIN_SUCCEED://
distribute.onResponse(response);
new CarchHandle(context).sendToService();
break;
case RESPONSE_CODE_SUCCEED://
distribute.onResponse(response);
break;
case RESPONSE_CODE_UNLOGIN:
L.e(this, " , JSESSIONID");
LoginModel model = new LoginModel(context);
model.login(UserUtils.getUserInfo(context), new CommonListener() {
@Override
public void successListener(UserBean user) {
start(context);
}
@Override
public void errorListener(int errorCode, String errorMassage) {
Toast.makeText(context, " ", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
break;
2. application / json 요청
vollley 의 post 요청 은 기본 값 입 니 다.
application / x - www - form - urlencoded 방식 입 니 다. 이것 은 부모 클래스 의 getBody ContentType 방법 을 볼 수 있 습 니 다. 우 리 는 이 방법 을 다시 써 서 우리 가 필요 로 하 는 contentType 을 되 돌려 주 고 getBody 방법 을 다시 써 서 요청 한 실체 클래스 를 되 돌려 주면 됩 니 다. 이것 은 application / json 을 예 로 들 면 됩 니 다.
@Override
public byte[] getBody() throws AuthFailureError {
return json.getBytes();
}
@Override
public String getBodyContentType() {
return "application/json;charset=" + getParamsEncoding();
}
코드 주소:
https://github.com/linqipeng/volleyCustomrequest
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.