刚刚开始学习,用的很简单,对于不了解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'//导入retrofit implementation 'com.google.code.gson:gson:2.8.5'//Gson 库 //下面两个是RxJava 和 RxAndroid implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:2.1.9' implementation 'com.squareup.retrofit2:converter-gson:2.5.0'//转换器,请求结果转换成Model implementation '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() } })
到这里应该就可以拿到数据,学习新的东西就是一步一步来的