美文网首页
Retrofit 接口服务类,以及实现

Retrofit 接口服务类,以及实现

作者: 魔女小姐的猫 | 来源:发表于2020-04-23 11:46 被阅读0次
  1. Retrofit使用步骤:
    ①. 到依赖,加网路权限
    依赖 Retrofit : implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    依赖 Retrofit.converter implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    依赖 Gson: implementation 'com.google.code.gson:gson:2.2.4'
    权限: <uses-permission android:name="android.permission.INTERNET"/>
    ②. 创建接口服务类:NaseURL和方法
    ③. 创建Retrofit对象
    ④. 通过Retrofit对象获取接口服务对象
    ⑤. 接口服务对象调用自己的方法,获得Call对象
    ⑥. 通过call执行请求

接口服务类 (12种方式)

package com.example.day422;

import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

public interface ApiService {
    String footUrl = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
    String BaseUrl = "http://www.qubaobei.com/ios/cf/";

    @GET("dish_list.php?stage_id=1&limit=20&page=1")
    Call<ResponseBody>get1();

    @GET("dish_list.php?")
    Call<ResponseBody>get2(@Query("stage_id")String stage_id,@Query("limit")String limit,@Query("page")String page);

    @GET("dish_list.php?")
    Call<ResponseBody>get3(@QueryMap Map<String,String> map);

    @POST("dish_list.php?")
    @FormUrlEncoded
    Call<ResponseBody>post1(@Field("stage_id")String stage_id,@Field("limit") String limit,@Field("page") String page);

    @POST("dish_list.php?")
    @FormUrlEncoded
    Call<ResponseBody>post2(@FieldMap HashMap<String,String> map);

    @POST("dish_list.php?")
    @Headers("Content_Type:application/x-www-from-urlencoded")
    Call<ResponseBody>post3(@Body RequestBody body);

    @GET("dish_list.php?stage_id=1&limit=20&page=1")
    Call<FootBean>foot();

    @GET
    Call<ResponseBody>get5(@Url String str);

    @GET
    Call<ResponseBody>get6(@Url String str ,@Query("stage_id") String stage_id,@Query("limit") String limit,@Query("page") String page);

    @GET("{dish_list}.php?stage_id=1&limit=20&page=1")
    Call<ResponseBody>get7(@Path("dish_list") String dish_list);

    @POST("dish_list.php")
    @Headers("Content-Type:application/json")
    Call<ResponseBody>post4(@Body RequestBody body);

    @POST()
    Call<ResponseBody>post5(@Url String url, @Body RequestBody body , @Header("Content-Type")  String deader);
}

Retrofit

package com.example.day422;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.HashMap;

import okhttp3.FormBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button button;
    private Button btn_2;
    private Button btn_3;
    private Button btn_post1;
    private Button btn_post2;
    private Button btn_post3;
    private Button btn_foot;
    private Button btn_get5;
    private Button btn_get6;
    private Button btn_get7;
    private Button btn_post4;
    private Button btn_post5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
        btn_2 = (Button) findViewById(R.id.btn_2);
        btn_2.setOnClickListener(this);
        btn_3 = (Button) findViewById(R.id.btn_3);
        btn_3.setOnClickListener(this);
        btn_post1 = (Button) findViewById(R.id.btn_post1);
        btn_post1.setOnClickListener(this);
        btn_post2 = (Button) findViewById(R.id.btn_post2);
        btn_post2.setOnClickListener(this);
        btn_post3 = (Button) findViewById(R.id.btn_post3);
        btn_post3.setOnClickListener(this);
        btn_foot = (Button) findViewById(R.id.btn_foot);
        btn_foot.setOnClickListener(this);
        btn_get5 = (Button) findViewById(R.id.btn_get5);
        btn_get5.setOnClickListener(this);
        btn_get6 = (Button) findViewById(R.id.btn_get6);
        btn_get6.setOnClickListener(this);
        btn_get7 = (Button) findViewById(R.id.btn_get7);
        btn_get7.setOnClickListener(this);
        btn_post4 = (Button) findViewById(R.id.btn_post4);
        btn_post4.setOnClickListener(this);
        btn_post5 = (Button) findViewById(R.id.btn_post5);
        btn_post5.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                get1();
                break;
            case R.id.btn_2:
                get2();
                break;
            case R.id.btn_3:
                get3();
                break;
            case R.id.btn_post1:
                post1();
                break;
            case R.id.btn_post2:
                post2();
                break;
            case R.id.btn_post3:
                post3();
                break;
            case R.id.btn_foot:
                foot();
                break;
            case R.id.btn_get5:
                get5();
                break;
            case R.id.btn_get6:
                get6();
                break;
            case R.id.btn_get7:
                get7();
                break;
            case R.id.btn_post4:
                post4();
                break;
            case R.id.btn_post5:
                post5();
                break;
        }
    }

    private void post5() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        FormBody body = new FormBody.Builder()
                .add("stage_id", "1")
                .add("limit", "20")
                .add("page", "1")
                .build();
        Call<ResponseBody> call = apiService.post5("dish_list.php",body,"application/json");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_post5.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void post4() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        FormBody body = new FormBody.Builder()
                .add("stage_id", "1")
                .add("limit", "20")
                .add("page", "1")
                .build();
        Call<ResponseBody> call = apiService.post4(body);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_post4.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void get7() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        Call<ResponseBody> call = apiService.get7("dish_list");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_get7.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void get6() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        Call<ResponseBody> call = apiService.get6("dish_list.php", "1", "20", "1");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_get6.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void get5() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        Call<ResponseBody> call = apiService.get5("dish_list.php?stage_id=1&limit=20&page=1");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_get5.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void foot() {
        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService service = retrofit.create(ApiService.class);
        Call<FootBean> call = service.foot();
        call.enqueue(new Callback<FootBean>() {
            @Override
            public void onResponse(Call<FootBean> call, Response<FootBean> response) {
                btn_foot.setText(response.body().getData().get(0).getTitle());
            }

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

            }
        });
    }

    private void post3() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        FormBody body = new FormBody.Builder()
                .add("stage_id", "1")
                .add("limit", "20")
                .add("page", "1")
                .build();
        Call<ResponseBody> call = apiService.post3(body);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_post3.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void post2() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService service = retrofit.create(ApiService.class);
        HashMap<String, String> map = new HashMap<>();
        map.put("stage_id", "1");
        map.put("limit", "20");
        map.put("page", "1");
        Call<ResponseBody> call = service.post2(map);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_post2.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void post1() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService service = retrofit.create(ApiService.class);
        Call<ResponseBody> call = service.post1("1", "20", "1");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_post1.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void get3() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        HashMap<String, String> map = new HashMap<>();
        map.put("stage_id", "1");
        map.put("limit", "20");
        map.put("page", "1");
        Call<ResponseBody> call = apiService.get3(map);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_3.setText(footBean.getData().get(1).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

            }
        });
    }

    private void get2() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        Call<ResponseBody> call = apiService.get2("1", "20", "1");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    String json = response.body().string();
                    FootBean footBean = new Gson().fromJson(json, FootBean.class);
                    btn_2.setText(footBean.getData().get(0).getTitle());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.i("taf", t.getMessage());
            }
        });
    }

    private void get1() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiService.BaseUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        Call<ResponseBody> call = apiService.get1();
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                Log.i("tag", Thread.currentThread().getName() + "  当前线程");
                try {
                    String json = response.body().string();
                    Log.i("tag", json);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.i("tag", t.getMessage());
            }
        });
    }
}

注:纯属胡写,仅供作者参考,若有帮助,不用感谢

相关文章

网友评论

      本文标题:Retrofit 接口服务类,以及实现

      本文链接:https://www.haomeiwen.com/subject/oxmoihtx.html