阅读 61

Retrofit简介

Retrofit介绍

适用于 Android 和 Java 的类型安全HTTP 客户端

特点:

1、性能好,处理快,使用简单

2、使用REST API设计风格

3、默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强。

4、默认使用Gson解析

使用

步骤: 1、导包

implementation 'com.squareup.retrofit2:retrofit:2.9.0'

2、代码步骤:

  1. 定义一个接口(封装URL地址和数据请求)

RequestServices.java

image.png

把基础地址都放在一个类里,方便调用 Constant.java

image.png

  1. 实例化Retrofit

image.png

  1. 通过Retrofit实例创建接口服务对象

image.png

  1. 接口服务对象调用接口中方法,获得Call对象

image.png

  1. Call对象执行请求(异步、同步请求)

image.png

全部代码:

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import java.io.IOException;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;

public class testretrofitActivity extends AppCompatActivity {

    private Context mContext = this;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testretrofit);
        initView();
        initRetrofit();
    }
    private void initView(){
        textView = (TextView) findViewById(R.id.tv_alipay);
    }
    private void initRetrofit(){
        //获取Retrofit对象,设置地址
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constant.URL_BASE)
                .build();
        Log.i("LHD","1");
        RequestServices requestServices = retrofit.create(RequestServices.class);
        Call<ResponseBody> call = requestServices.getString();
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                if (response.isSuccessful()){
                    try {
                        Log.i("LHD",response.body().toString());
                        //返回的结果保存在response.body()中
                        String result = response.body().string();
                        //onResponse方法是运行在主线程也就是UI线程的,所以我们可以在这里
                        //直接更新UI
                        textView.setText(result);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.i("LHD","访问失败");
            }
        });

    }

    private class RequestServices {
        public Call<ResponseBody> getString() {
            return null;
        }
    }
}
复制代码

注解

Retrofit使用大量注解来简化请求,Retrofit将okhttp请求抽象成java接口,使用注解来配置和描述网络请求参数。

1、请求方法注解

请求方法注解说明
@GETget请求
@POSTpost请求
@PUTput请求
@DELETEdelete请求
@PATCHpatch请求,该请求是对put请求的补充,用于更新局部资源
@HEADhead请求
@OPTIONSoptions请求
@HTTP通过注解,可以替换以上所有的注解,它拥有三个属性:method、path、hasBody
文章分类
阅读
文章标签