Retrofit使用笔记

2019-08-18  本文已影响0人  树蜂

GitHub: https://github.com/square/retrofit

一、post json 数据

1、添加依赖

// retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'

2、发送的数据实体类 OrderRequest

public class OrderRequest
{
    private String order;
    // 省略getter setter
}

3、接收服务器返回数据的实体类 OrderResponse

public class OrderResponse
{
    /**
     * 成功状态
     */
    private boolean su;
    /**
     * 状态消息
     */
    private String msg;
    // 省略getter setter
}

4、Retrofit的实现接口 IRequestClient

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;

public interface IRequestClient
{
    /**
     * 发送json数据形式的post请求,把网络请求接口的后半部分 api 写在里面
     * 返回类型为Call<*>,*是接收数据的类
     * @Body即非表单请求体,被@Body注解的 OrderRequest 将会被Gson转换成json发送到服务器
     *
     * @param pData
     * @return
     */
    @POST("api")
    Call<OrderResponse> request(@Body OrderRequest pData);
}

5、发送请求

public void quest()
    {
        // 创建Retrofit对象
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://服务器地址/")
                // 添加Gson支持
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        // 创建网络请求接口的实例,调用接口
        IRequestClient api = retrofit.create(IRequestClient.class);
        // OrderRequest 在接口api中转成了json格式的数据
        OrderRequest pRequest = new OrderRequest();
        Call<OrderResponse> call = api.request(pRequest);
        // 发送网络请求(异步),回调方法执行在主线程
        call.enqueue(new Callback<OrderResponse>()
        {
            // 请求成功
            @Override
            public void onResponse(Call<OrderResponse> call, Response<OrderResponse> response)
            {
                OrderResponse _Response = response.body();
                if (_Response != null)
                {
                    boolean _Success = _Response.isSu();
                    String _Msg = _Response.getMsg();
                    Logger.d(_Success + " - " + _Msg);
                }
                else
                {
                    Logger.e("_Response == null");
                }

            }

            // 求失败
            @Override
            public void onFailure(Call<OrderResponse> call, Throwable t)
            {
                Logger.e("请求失败: " + t.toString());
            }
        });
    }
上一篇 下一篇

猜你喜欢

热点阅读