Retrofit使用筆記

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、發(fā)送的數據實體類 OrderRequest

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

3、接收服務器返回數據的實體類 OrderResponse

public class OrderResponse
{
    /**
     * 成功狀態(tài)
     */
    private boolean su;
    /**
     * 狀態(tài)消息
     */
    private String msg;
    // 省略getter setter
}

4、Retrofit的實現接口 IRequestClient

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

public interface IRequestClient
{
    /**
     * 發(fā)送json數據形式的post請求,把網絡請求接口的后半部分 api 寫在里面
     * 返回類型為Call<*>,*是接收數據的類
     * @Body即非表單請求體,被@Body注解的 OrderRequest 將會被Gson轉換成json發(fā)送到服務器
     *
     * @param pData
     * @return
     */
    @POST("api")
    Call<OrderResponse> request(@Body OrderRequest pData);
}

5、發(fā)送請求

public void quest()
    {
        // 創(chuàng)建Retrofit對象
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://服務器地址/")
                // 添加Gson支持
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        // 創(chuàng)建網絡請求接口的實例,調用接口
        IRequestClient api = retrofit.create(IRequestClient.class);
        // OrderRequest 在接口api中轉成了json格式的數據
        OrderRequest pRequest = new OrderRequest();
        Call<OrderResponse> call = api.request(pRequest);
        // 發(fā)送網絡請求(異步),回調方法執(zhí)行在主線程
        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());
            }
        });
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容