Android Retrofit使用实例--get请求

本文详细介绍了如何在Android应用中使用Retrofit库进行网络请求,包括库的引入、权限设置、自定义实体类、创建请求接口及发送请求的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引用Retrofit库

我使用的是androidstudio。在app下的build.gradle里添加如下图代码:

implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

二、权限

在AndroidManifest.xml文件中加入权限,如下:

<uses-permission android:name="android.permission.INTERNET" />

三、自定义实体类,对应服务器返回的数据的实体类

public class OutWarehouseOrder {
    public String sCode;
    public String dOutWarehouseDate;
    public String LicensePlateNumber;
    public String TotalItems;
    public String TotalCubic;
}

四、请求接口

import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;

public interface GetRequestInterface {
    // 注解里传入 网络请求 的部分URL地址
    // Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里

    /**
     * 获取列表
     * */
    @GET("api/Order/List")
    Call<List<OutWarehouseOrder>> getList();
}

注意:上面代码里@GET("api/Order/List")的api/Order/List只是请求地址的一部分,另一部分在mainactivity里创建Retrofit时的baseUrl赋值。

五、发送请求

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
    private String TAG = "MainActivity_Log";//日志标记

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载活动页面activity_main.xml
        setContentView(R.layout.activity_main);

        GetList();//获取列表
    }

    private void GetList(){
        //创建Retrofit对象
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://127.0.0.1:8080/") //基础url,其他部分在GetRequestInterface里
                .addConverterFactory(GsonConverterFactory.create()) //Gson数据转换器
                .build();

        //创建网络请求接口实例
        GetRequestInterface request = retrofit.create(GetRequestInterface.class);
        Call<List<OutWarehouseOrder>> call = request.getTodayOutWarehouse();

        //发送网络请求(异步)
        call.enqueue(new Callback<List<OutWarehouseOrder>>() {
            @Override
            public void onResponse(Call<List<OutWarehouseOrder>> call, Response<List<OutWarehouseOrder>> response) {
                //Log.i(TAG, "GetOutWarehouseList->onResponse(MainActivity.java): "+response.body());

                List<OutWarehouseOrder> OutWarehouseList = response.body();
                Log.i(TAG, OutWarehouseList.get(0).sCode);
            }

            @Override
            public void onFailure(Call<List<OutWarehouseOrder>> call, Throwable t) {
                Log.i(TAG, "GetOutWarehouseList->onFailure(MainActivity.java): "+t.toString() );
            }
        });
    }

}

这样服务器传过来的json数组,就被解析到List<OutWarehouseOrder> OutWarehouseList 中了。

注意:如果是Android9.0的话,会报“not permitted by network security policy”错误,因为9.0限制了明文流量的网络请求,所以推荐使用https,至于其他解决方法,请百度。

Android中,Retrofit是一个流行的网络库,用于与RESTful API交互。当你需要发送GET请求并接收JSON数据时,可以按照以下步骤操作: 1. 首先,确保已添加Retrofit和Gson依赖到你的项目。如果你使用的是Maven或Gradle,可以在build.gradle文件中添加它们: ```gradle dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' } ``` 2. 创建一个Retrofit实例,并指定API基础URL: ```java Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://your-api-url.com") // 替换为你实际的API地址 .addConverterFactory(GsonConverterFactory.create()) .build(); ``` 3. 定义一个接口(通常命名为Service),该接口包含一个公开的方法,用于表示GET请求: ```java public interface ApiService { @GET("path/to/your/resource") Call<YourResponse> getData(@Query("key") String keyValue); } ``` 这里`@GET`是注解,表示这是一个HTTP GET请求,`"path/to/your/resource"`是你API中对应资源的路径,`@Query("key")`指定了查询参数。 4. 调用服务方法并处理返回结果: ```java Call<YourResponse> call = retrofit.create(ApiService.class).getData("value"); call.enqueue(new Callback<YourResponse>() { @Override public void onResponse(Call<YourResponse> call, Response<YourResponse> response) { if (response.isSuccessful()) { YourResponse data = response.body(); // 获取JSON响应并解析为对象 // 使用data进行后续操作 } else { // 处理错误情况 } } @Override public void onFailure(Call<YourResponse> call, Throwable t) { // 处理网络请求失败的情况 } }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值