RxJava+retrofit2 네트워크 요청
public class HttpResult {
private int code;
private String message;
private T result;
public int getCode() {
returncode;
}
public void setCode(intcode) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
}
2. 네트워크 요청 도구 클래스 만들기
public classHttpRequestUtils{
public static finalString BASE_URL =" ";
private static finalintDEFAULT_TIMEOUT =10;
private Retrofit retrofit;
private RequestService requestService;
/**
* ,
*/
private HttpRequestUtils() {
// OkHttpClient
OkHttpClient.Builder builder =newOkHttpClient.Builder();
builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
retrofit =newRetrofit.Builder().client(builder.build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(BASE_URL)
.build();
requestService = retrofit.create(RequestService.class);// API
}
/**
* HttpRequestUtils
*/
private static classSingletonHolder{
private static finalHttpRequestUtils INSTANCE =newHttpRequestUtils();
}
/**
*
*@return
*/
public static HttpRequestUtils getInstance() {
return SingletonHolder.INSTANCE;
}
/** * *@return*/
public static RequestService getRequestService(){
return getInstance().requestService;
}
/** * *@paramo *@params *@param */
public void toSubscribe(Observable o, Subscriber s) {
o.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io())// io
.observeOn(AndroidSchedulers.mainThread()).subscribe(s);//
}
}
3. 처리 요청 결과
public class HttpResultFunctionimplementsFunc1 {
@Override
public T call(HttpResult tHttpResult) {
if(tHttpResult.getCode() ==0) {
thrownewApiException(ApiException.EXCEPTION_CODE1);//
}
returntHttpResult.getResult();
}
}
4, 이상 정의
public class ApiException extends RuntimeException{
public static final int EXCEPTION_CODE1=100;
public static final int EXCEPTION_CODE2=101;
public ApiException(int resultCode) {
this(getApiExceptionMessage(resultCode));
}
public ApiException(String detailMessage) {
super(detailMessage);
}
private static String getApiExceptionMessage(intcode){
String message ="";
switch(code) {
case EXCEPTION_CODE1:
message =" 1";
break;
case EXCEPTION_CODE2:
message =" 2";
break;
default:
message =" ";
}
return message;
}
}
5. 요청 API 정의
public interface RequestService {
@POST("user/loginApi")
Observable loginApi(@Field("username") String username,@Field("password") String password,@Field("pushid") String pushid);
}
6、이 로그인 방법을 호출합니다
public void login( String username, String password,String pushid) {
Observable observable = HttpRequestUtils.getRequestService().loginApi(username, password,pushid).map(new HttpResultFunction());
HttpRequestUtils.getInstance().toSubscribe(observable,newSubscriber() {
@Override
public void onCompleted() {
Toast.makeText(OtherActivity.this," ",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable throwable) {
Toast.makeText(OtherActivity.this,throwable.getMessage(),Toast.LENGTH_SHORT).show();
}
@Override
public void onNext(String s) {
Toast.makeText(OtherActivity.this,s,Toast.LENGTH_SHORT).show();
}
});
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.