目录
效果展示接口介绍
步骤:1. gradle添加依赖库2. 创建数据类3. 定义代理接口4.Retrofit构造器
调用最后注意
效果展示
接口介绍
接口: 手机号码归属地查询API. 支持格式:JSON 请求方法:GET
步骤:
1. gradle添加依赖库
dependencies
{
...
implementation
'com.squareup.retrofit2:retrofit:2.9.0'
implementation
'com.squareup.retrofit2:converter-gson:2.9.0'
}
2. 创建数据类
data
class Tel(val status
: String
, val msg
: String
, val result
: Result
) {
data
class Result(
val province
: String
,
val city
: String
,
val company
: String
,
val cardtype
: String
)
}
3. 定义代理接口
interface TelService {
@
GET("shouji/query")
fun
SerachTelByGet(@
Query("appkey") appkey
: String
, @
Query("shouji") shouji
: String
): Call
<Tel
>
}
4.Retrofit构造器
object ServiceCreator
{
private const val
BASE_URL = "https://api.binstd.com"
private val retrofit
= Retrofit
.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory
.create())
.build()
fun
<T> create(serviceClass
: Class
<T>): T = retrofit
.create(serviceClass
)
}
调用
package com
.example
.serachtel
import android
.os
.Bundle
import androidx
.appcompat
.app
.AppCompatActivity
import kotlinx
.android
.synthetic
.main
.activity_main
.*
import retrofit2
.Call
import retrofit2
.Callback
import retrofit2
.Response
class MainActivity : AppCompatActivity() {
private val appkey
= "注册后即可获取"
override fun
onCreate(savedInstanceState
: Bundle
?) {
super.onCreate(savedInstanceState
)
setContentView(R.layout
.activity_main
)
requestGetBtn
.setOnClickListener
{
val telNumber
= inputTelEt
.text
.toString()
val telService
= ServiceCreator
.create(TelService
::class.java
)
telService
.SerachTelByGet(appkey
, telNumber
).enqueue(object
: Callback
<Tel
> {
override fun
onFailure(call
: Call
<Tel
>, t
: Throwable
) {
t
.printStackTrace()
}
override fun
onResponse(call
: Call
<Tel
>, response
: Response
<Tel
>) {
val tel
= response
.body()
if (tel
!= null) {
infoTv
.text
= "${tel.result.province} ${tel.result.city}"
}
}
})
}
}
}
最后注意
1 网络权限
<uses
-permission android
:name
="android.permission.INTERNET" />
2 我编译时报错Error: Invoke-customs are only supported starting with Android O (–min-api 26) 原因:代码未设置支持Java8
解决方法:在app的build.gradle添加如下代码
android
{
...
compileOptions
{
sourceCompatibility JavaVersion
.VERSION_1_8
targetCompatibility JavaVersion
.VERSION_1_8
}
}