週記2

1. RxJava & Retrofit 使用

get請求

//一般get請求
@GET("Api/Token/GetToken")
Call<GetToken> getToken(@Query("account") String account,@Query("password") String password);

//get請求加入動態頭
@GET("Api/User/GetListByPage")
Call<GetListByPage> getListByPage(@Header("AccessToken") String token, @Query("pageIndex") int pageIndex, @Query("pageSize") int pageSize);

//固定頭
@Headers("apikey:81bf9da930c7f9825a3c3383f1d8d766")
@GET("Api/User/GetListByPage")
Call<GetListByPage> getListByPage(@Query("pageIndex") int pageIndex, @Query("pageSize") int pageSize);

//動態Url
@GET("Api/Token/{url}")
Call<GetToken> getToken(@Query("account") String account,@Query("password") String password,@Path("url") String url);

post請求

//一般post
@POST("api/Member/Create")
Call<PostResponse> createTask(@Body PostRequestBody postRequestBody, @Header("AccessToken") String token, @Header("moredianToken") String modiantoken);

封裝Retrofit ,封裝業務邏輯, 封裝網絡請求

    public static  Retrofit getClient(String baseUrl) {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        //設置日誌Level
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
        httpClient.connectTimeout(20, TimeUnit.SECONDS);
        //添加攔截器到OkHttp,這是最關鍵的
        httpClient.addInterceptor(logging);
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .client(httpClient.build())
                    .build();
        }
        return retrofit;
    }



    public static GetTokenService getTokenService() {
        return RetrofitClient.getClient(BASE_URL).create(GetTokenService.class);
    }



    public void getToken(String name, String password, Context context) {
        ApiUtils.getTokenService().getToken(name,password).enqueue(new Callback<GetToken>() {
            @Override
            public void onResponse(Call<GetToken> call, Response<GetToken> response) {
               
            }
            @Override
            public void onFailure(Call<GetToken> call, Throwable t) {
                
            }
        });
    }

使用Rxjava

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
@POST("api/Member/Create")
Observable<PostResponse> createTask(@Body PostRequestBody postRequestBody, @Header("AccessToken") String token, @Header("moredianToken") String modiantoken);
public void postCreate(PostRequestBody postRequestBody, String token, String modiantoken){
        ApiUtils.postCreateService().createTask(postRequestBody,token,modiantoken)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<PostResponse>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(PostResponse postResponse) {
                        //請求成功
                    }

                    @Override
                    public void onError(Throwable e) {
                        //請求失敗
                        if(e instanceof HttpException){
                            ResponseBody body = ((HttpException) e).response().errorBody();
                            try {
                                JSONObject jsonObject = new JSONObject(body.string());
                                //手動解析你所需要的信息
                            } catch (JSONException e1) {
                                e1.printStackTrace();
                            } catch (IOException e1) {
                                e1.printStackTrace();
                            }
                        }
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章