Retrofit简单使用(GET、POST)

在这里插入图片描述

首先呢 老老实实导依赖就行了

	implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'

第二步 清单文件中加入网络权限 !

第三步定义接口请求方式吧

/*Time:2019/5/15
 *Author:zhaozhiwei
 *Description:
 */
public interface IApiService {
    /**
     * 获取Banner信息
     * @return
     */
    @GET("small/commodity/v1/bannerShow")
    Call<BannerResponse> getBannerShow();//括号里是bean类
    /**
     * 登陆
     * @param phone
     * @param pwd
     * @return
     */
    @FormUrlEncoded //这个加上有啥用,为什么不加这个会崩溃  @Field parameters can only be used with form encoding.
    @POST("small/user/v1/login")
    Call<PostBean> getPostShow(@Field("phone")String phone,@Field("pwd") String pwd);
}

里面的Bean类大家自己alt+s 封装一下就ojbk
第四步呢就该写retroifit管理类

/*Time:2019/5/15
 *Author:zhaozhiwei
 *Description:
 */
public class RetrofitManager {


    private Retrofit mRetrofit;

    private RetrofitManager(){
        initRetrofit();
    }
    //静态内部类单例
    private static class oKHPMH{
        public static RetrofitManager instance = new RetrofitManager();
    }
    public static RetrofitManager getInstance(){
        return oKHPMH.instance;
    }
    //初始化fit
    private void initRetrofit() {
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                .addInterceptor(loggingInterceptor)//添加拦截器日志
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(10,TimeUnit.SECONDS)
                .writeTimeout(10,TimeUnit.SECONDS)
                .retryOnConnectionFailure(true);
        OkHttpClient client = builder.build();

        mRetrofit = new Retrofit.Builder()
                .baseUrl("http://XX.177.77.177/")	//这里写的是接口的前半部分 必须以“ / ”结尾
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
    }


    public <T> T createReq(Class<T> reqServer){
        return mRetrofit.create(reqServer);
    }
}

最后在需要调用的类里用就可以了 比如mvp的model层

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.mButton)
    Button mButton;
    @BindView(R.id.mButtonPost)
    Button mButtonPost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

    }

    @OnClick({R.id.mButton, R.id.mButtonPost})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.mButton://GET请求
                //创建获取Banner内容的接口实例
                IApiService apiService = RetrofitManager.getInstance().createReq(IApiService.class);
                //对发送请求进行封装
                Call<BannerResponse> call = apiService.getBannerShow();//getBannerShow是定GET请求的类方法
                //发送网络请求(异步)
                call.enqueue(new Callback<BannerResponse>() {
                    @Override
                    public void onResponse(Call<BannerResponse> call, Response<BannerResponse> response) {
                        if (response.isSuccessful()) {
                            List<BannerResponse.ResultBean> result = response.body().getResult();
                            String imageUrl = result.get(1).getImageUrl();
                            //这里直接解析完的 所以不用解析了
                            Log.i("AAn", "onResponse: " + imageUrl + "返回值");

                        } else {
                            Log.i("AAn", "onResponse: 空" + "返回值");

                        }
                    }

                    @Override
                    public void onFailure(Call<BannerResponse> call, Throwable t) {
                        Log.i("AAn", "onResponse: 失败" + "返回值" + t.toString());

                    }
                });

                break;
            case R.id.mButtonPost://POST请求
                IApiService req = RetrofitManager.getInstance().createReq(IApiService.class);
                //对发送的请求进行封装
                Call<PostBean> postShow = req.getPostShow("15201230076", "1111");
                postShow.enqueue(new Callback<PostBean>() {
                    @Override
                    public void onResponse(Call<PostBean> call, Response<PostBean> response) {
                        if (response.isSuccessful()){
                            PostBean.ResultBean result = response.body().getResult();
                            String nickName = result.getNickName();
                            Log.i("AAn", "onResponse: 返回值"+nickName);
                        }
                    }

                    @Override
                    public void onFailure(Call<PostBean> call, Throwable t) {
                        Log.i("AAn", "onResponse: 失败" + "返回值" + t.toString());
                    }
                });
                break;
        }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值