前言:
HttpURLConnection的使用http://t.csdn.cn/hRjch
OkHttp的简单使用是在HttpURLConnection的基础上改造的,仅仅将按键的点击事件改成了okhttp()。
class MainActivity : AppCompatActivity() {
lateinit var binding:ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
binding=ActivityMainBinding.inflate(layoutInflater)
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.btn.setOnClickListener{
okhttp()
}
}
private fun showText(string:String){
runOnUiThread {
binding.textView.text=string
}
}
fun okhttp(){
thread {
try {
//创建一个OkHttpClient实例
val okHttp=OkHttpClient()
//使用构造器创建一个Request实例
val request=Request.Builder()
.url("https://www.baidu.com")
.build()
//通过new一个Call对象并调用它的execute方法获得返回值
val response=okHttp.newCall(request).execute()
//将返回内容转变成字符串
val response1=response.body()?.string()
if (response1 != null) {
//显示在view上
showText(response1)
}
}catch (e:Exception){
e.printStackTrace()
}
}
}
}
效果如图,跟使用HttpURLConnection时一样:
发送post请求
当需要发起一条post请求时,还需要增加构建request的body。
fun okhttp(){
thread {
try {
//创建一个OkHttpClient实例
val okHttp=OkHttpClient()
//构造request的body
val requestBody=FormBody.Builder()
.add("name","admin")
.add("password","123456")
.build()
//使用构造器创建一个Request实例
val request=Request.Builder()
.url("https://www.baidu.com")
.build()
//通过new一个Call对象并调用它的execute方法获得返回值
val response=okHttp.newCall(request).execute()
//将返回内容转变成字符串
val response1=response.body()?.string()
if (response1 != null) {
//显示在view上
showText(response1)
}
}catch (e:Exception){
e.printStackTrace()
}
}
}