retrofit:2.2.0的基本使用

本文详细介绍了Retrofit 2.2.0框架的基本使用方法,包括依赖导入、初始化、网络请求实体制定及触发调用流程。通过实例演示如何使用Retrofit进行网络请求,适用于Android开发者快速上手。

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

retrofit:2.2.0框架功能强大,在网络加载方面封装的非常优秀,今天我们来了解下他的基本使用方法

1,导入依赖:

这里把gson这个优秀的框架也一并导入

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

2,初始化Retrofit对象

//很明显我们可以看到Retrofit这个框架采用的是构建者模式
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(Contant.BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
/**
 *这里有必要解释下这个BASE_URL,这个string表示的是服务器连接的最顶级
 * 例如: 
 * https://mp.youkuaiyun.com/mdeditor/a.png
 * https://mp.youkuaiyun.com/mdeditor/c.png
 * https://mp.youkuaiyun.com/mdeditor/mm/.png
 * https://mp.youkuaiyun.com/mdeditor/yh.png
 * https://mp.youkuaiyun.com/mdeditor/my.png
 * name这里的BASE_URL就是 https://mp.youkuaiyun.com/mdeditor/
 * 可以理解为根url
  */        

3,制定网络请求实体

    responseInfoAPI = retrofit.create(ResponseInfoAPI.class)
     /**
       * 在这里就需要重点介绍下这个ResponseInfoAPI ,这个名字是自己起的,叫什么无所谓,主要是里面的内容
       */

我们需要重新写一个接口

public interface ResponseInfoAPI {
    //指定请求方式
    //请求的完整链接地址
    //请求的方法,请求参数
    //请求的相应结果
    //http://10.0.2.2:8080/TakeoutServiceVersion2

    @GET(Contant.HOME_URL)
    Call<ResponseInfo> getHomeInfo(@Query("latitude") String latitude, @Query("longitude") String longitude);
}
 /**
   * 1,很多人看到这里就比较迷糊了,读者可以先看成一个普通接口
   * getHomeInfo(String latitude,String longitude)
   * 2,接下来@GET(Contant.HOME_URL)这个表示将HOME_URL这个连接传进去,注意这里的HOME_URL会拼接在前面的BASE_URL的后面形成一个完整的URL链接。形成以下的形式,get的形式
   * @GET(Contant.HOME_URL)
   * getHomeInfo(String latitude,String longitude)
   * 3,完整的url是形成了,但是需要传入相关的参数,这里的参数就是String latitude,String longitude,在retrofit中用一个标志表示在get中传入的参数也就是@Query("latitude")
   * 4,最后带一个返回值
   * @GET(Contant.HOME_URL)
   * Call<ResponseInfo> getHomeInfo(@Query("latitude") String latitude, @Query("longitude") String 
   * 5,这里的返回值是你自己定义的,但是必须跟你的数据对应
   */

3,触发调用

public class HomePresenter extends BasePresenter {
    @Override
    protected void showError(String message) {

    }

    @Override
    protected void parseJson(String json) {
        //在此处解析JSON
        Gson gson = new Gson();
        gson.fromJson(json, HomeInfo.class)
    }
    //触发网络请求
    public void getHomeData(String lat,String lon){
        Call<ResponseInfo> homeInfo = responseInfoAPI.getHomeInfo(lat, lon);
        //触发callback中的成功或者失败的回调方法
        homeInfo.enqueue(new CallBackAdapter());
    }
}

一旦getHomeData这个方法被调用就会执行网络请求,而此时这个类实现了上一个类,需要实现两个回调方法,于是就会有数据出来

settings.gradle.kts pluginManagement { repositories { google { content { includeGroupByRegex(“com\.android.") includeGroupByRegex("com\.google.”) includeGroupByRegex(“androidx.*”) } } mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = “Kucun2” include(“:app”) app/build.gradle.kts plugins { alias(libs.plugins.android.application) } android { namespace = “com.example.kucun2compileSdk = 34 defaultConfig { applicationId = "com.example.kucun2" minSdk = 34 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { viewBinding = true } } dependencies { implementation(libs.appcompat) implementation(libs.material) implementation(libs.constraintlayout) implementation(libs.lifecycle.livedata.ktx) implementation(libs.lifecycle.viewmodel.ktx) implementation(libs.navigation.fragment) implementation(libs.navigation.ui) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) // Retrofit implementation("com.squareup.retrofit2:retrofit:3.0.0") implementation("com.squareup.retrofit2:converter-gson:3.0.0") // Material Design implementation("com.google.android.material:material:1.11.0") // RecyclerView implementation(libs.androidx.recyclerview) // Lifecycle components implementation("androidx.lifecycle:lifecycle-extensions:2.2.0") } kucun2/build.gradle.kts // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { alias(libs.plugins.android.application) apply false } 改为build.gradle ,只写java
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值