Retrofit的使用和封装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/LH_sunshine/article/details/102671960

Retrofit接口的封装

GET

//    http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1

    //@Get 请求后面的声明   拼接到我们的baseurl上 之后就会获取一个完整路径
    @GET("ios/cf/{path}")

    //必须传的用@Path(),不必要的用 @Query
    Call<Bean> getData(@Path("path")String path , @Query("stage_id")String state_id , @Query("limit")String limit , @Query("page")String page);

    @GET("ios/cf/{path}")
    Call<Bean> getMapData(@Path("path")String path , @QueryMap Map<String,String> map);

    @GET
    Call<Bean> getUrlData(@Url String url);

Post

 @POST("ios/cf/{path}")
    @FormUrlEncoded

        //必须传的用@Path(),不必要的用 @Query
    Call<Bean> getData(@Path("path")String path , @Query("stage_id")String state_id , @Query("limit")String limit , @Query("page")String page);

    @POST("ios/cf/{path}")
    Call<Bean> getMapData(@Path("path")String path , @Body BodyBean bodyBean);

    @POST
    Call<Bean> getUrlData(@Url String url);

GET实现

public class GetActivity extends AppCompatActivity {
    private String baseUrl = "http://www.qubaobei.com/";
    private String Url = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_get);

        initRetorfit();

        initMapData();

        initURL();
    }

    private void initURL() {

        new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
                .create(MyGet.class)
                .getUrlData(Url)
                .enqueue(new Callback<Bean>() {
                    @Override
                    public void onResponse(Call<Bean> call, Response<Bean> response) {
                        Log.e("#######data_Url",response.body().toString());
                    }

                    @Override
                    public void onFailure(Call<Bean> call, Throwable t) {

                    }
                });

    }

    private void initMapData() {
        Map<String,String> map = new HashMap<>();
        map.put("stage_id","1");
        map.put("limit","20");
        map.put("page","1");


        new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
                .create(MyGet.class)
                .getMapData("dish_list.php",map)
                .enqueue(new Callback<Bean>() {
                    @Override
                    public void onResponse(Call<Bean> call, Response<Bean> response) {
                        Log.e("#######data_Map",response.body().toString());
                    }

                    @Override
                    public void onFailure(Call<Bean> call, Throwable t) {

                    }
                });
    }

    private void initRetorfit() {

        //获取retrofit的构建者
        Retrofit.Builder builder = new Retrofit.Builder();

        //传入baseurl
        builder.baseUrl(baseUrl);

        //给我们通过网络请求的json串 转化成我们的bean类
        builder.addConverterFactory(GsonConverterFactory.create());

        //获取我们retrofit的实例
        Retrofit build = builder.build();

        MyGet myGet = build.create(MyGet.class);

        Call<Bean> call = myGet.getData("dish_list.php", "1", "20", "1");

        call.enqueue(new Callback<Bean>() {
            @Override
            public void onResponse(Call<Bean> call, Response<Bean> response) {
                //请求成功后获取数据
                Log.e("#######data_Nomal",response.body().toString());
            }

            @Override
            public void onFailure(Call<Bean> call, Throwable t) {
                //请求失败
            }
        });


    }

Post实现

public class PostActivity extends AppCompatActivity {
    private String baseUrl = "http://www.qubaobei.com/";
    private String Url = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post2);
        initRetorfit();

//        initMapData();
//
//        initURL();
    }

    private void initURL() {

        new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
                .create(MyPost.class)
                .getUrlData(Url)
                .enqueue(new Callback<Bean>() {
                    @Override
                    public void onResponse(Call<Bean> call, Response<Bean> response) {
                        Log.e("#######data_Url",response.body().toString());
                    }

                    @Override
                    public void onFailure(Call<Bean> call, Throwable t) {

                    }
                });

    }

    private void initMapData() {
        BodyBean bodyBean = new BodyBean();
        bodyBean.setStage_id("1");
        bodyBean.setPage("1");
        bodyBean.setLimit("20");


        new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
                .create(MyPost.class)
                .getMapData("dish_list.php",bodyBean)
                .enqueue(new Callback<Bean>() {
                    @Override
                    public void onResponse(Call<Bean> call, Response<Bean> response) {
                        Log.e("#######data_Map",response.body().toString());
                    }

                    @Override
                    public void onFailure(Call<Bean> call, Throwable t) {

                    }
                });
    }

    private void initRetorfit() {

        //获取retrofit的构建者
        Retrofit.Builder builder = new Retrofit.Builder();

        //传入baseurl
        builder.baseUrl(baseUrl);

        //给我们通过网络请求的json串 转化成我们的bean类
        builder.addConverterFactory(GsonConverterFactory.create());

        //获取我们retrofit的实例
        Retrofit build = builder.build();

        MyPost myPost = build.create(MyPost.class);

        Call<Bean> call = myPost.getData("dish_list.php", "1", "20", "1");

        call.enqueue(new Callback<Bean>() {
            @Override
            public void onResponse(Call<Bean> call, Response<Bean> response) {
                //请求成功后获取数据
                Log.e("#######data_Nomal",response.body().toString());
            }

            @Override
            public void onFailure(Call<Bean> call, Throwable t) {
                //请求失败
            }
        });


    }

猜你喜欢

转载自blog.csdn.net/LH_sunshine/article/details/102671960