当前位置: 代码迷 >> 综合 >> koltlin okhttp3.0+Retrofit2.0
  详细解决方案

koltlin okhttp3.0+Retrofit2.0

热度:23   发布时间:2023-10-19 06:57:39.0

刚刚开始学习,用的很简单,对于不了解retrofit只能一步步慢慢来

先贴上retrofit的官网地址retrofit

这里有注意地方 retrofit 支持Android :

Retrofit requires at minimum Java 7 or Android 2.3.

再贴上okhttp3.0官网地址 okhttp3.0

这里也有注意的地方,之前就遇到坑了,一进入应用就报错,刚刚开始有点注意,看到这个手机有点老,4.4.2版本的系统,只是有意识的注意了一下并没有在意,最后还是看到官网的解释

OkHttp supports Android 5.0+ (API level 21+) and Java 8+.

只支持5.0以上的,并且java8以上。

先把依赖加上:

    implementation 'com.squareup.retrofit2:retrofit:2.5.0'//导入retrofitimplementation 'com.google.code.gson:gson:2.8.5'//Gson 库
//下面两个是RxJava 和 RxAndroidimplementation 'io.reactivex.rxjava2:rxandroid:2.0.2'implementation 'io.reactivex.rxjava2:rxjava:2.1.9'implementation 'com.squareup.retrofit2:converter-gson:2.5.0'//转换器,请求结果转换成Modelimplementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'//配合Rxjava 使用implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0'implementation 'com.alibaba:fastjson:1.2.56'

这是全部依赖,看到那些有用就添加,里面主要用rxjava2.0+retrofit2.0+okhttp3.0一起使用

现在直接上代码,因为是初学,先把数据请求拿到就好,继续;

//写在接口类里面,Get请求 ,post就换成post就好了不过要和@FormUrlEncoded 一起连用,否则会报错

Form-encoded data is sent when @FormUrlEncoded is present on the method. Each key-value pair is annotated with @Field containing the name and the object providing the value.

@GET("em/get")
fun getEm2() :Call<EmEntry>
val retrofit = Retrofit.Builder().baseUrl(Url.uri_path)
//如果不加上这句会包.addConverterFactory(GsonConverterFactory.create())
//java.lang.IllegalArgumentException: Unable to create converter for class.build()
val api = retrofit.create(Api::class.java)
api.getEm2().enqueue(object :Callback<EmEntry>{override fun onFailure(call: Call<EmEntry>, t: Throwable) {}override fun onResponse(call: Call<EmEntry>, response: Response<EmEntry>) {tv.text = response.body()?.data.toString()}})

到这里应该就可以拿到数据,学习新的东西就是一步一步来的