赞
踩
dependencies {
...
implementation("com.squareup.okhttp3:okhttp:4.10.0")
implementation 'cn.hutool:hutool-all:5.8.4'
}
使用 viewBinding
注意:顺便加下 buildFeatures
android {
compileSdk 31
...
buildFeatures {
viewBinding true
}
}
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.luna.apitest"> <!-- 网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.APITest"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/tv_show_get" android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="40dp" android:gravity="center" android:hint="通过网络请求获取到的内容" android:padding="5dp" /> <Button android:id="@+id/bt_send_get" android:layout_width="match_parent" android:layout_height="50dp" android:text="GET发送请求" /> <TextView android:id="@+id/tv_show_post" android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="40dp" android:gravity="center" android:hint="通过网络请求获取到的内容" android:padding="5dp" /> <Button android:id="@+id/bt_send_post" android:layout_width="match_parent" android:layout_height="50dp" android:text="POST发送请求" /> </LinearLayout>
object OkHttpUtil { fun get(url: String, callback: Callback) { Thread { val client: OkHttpClient = OkHttpClient.Builder().build() val request: okhttp3.Request = okhttp3.Request.Builder() .url(url) .build() client.newCall(request).enqueue(callback) }.start() } fun post(url: String, json: String, callback: Callback) { Thread { val requestBody: RequestBody = json.toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull()) val client: OkHttpClient = OkHttpClient.Builder().build() val request: okhttp3.Request = okhttp3.Request.Builder() .url(url) .post(requestBody) .build() client.newCall(request).enqueue(callback) }.start() } }
package com.luna.apitest import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import cn.hutool.json.JSONObject import cn.hutool.json.JSONUtil import com.luna.apitest.databinding.ActivityMainBinding import com.luna.apitest.util.OkHttpUtil import okhttp3.Call import okhttp3.Callback import okhttp3.Response import java.io.IOException class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //加载布局 binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // get接口:按钮点击事件 binding.btSendGet.setOnClickListener { OkHttpUtil.get("https://api.iyk0.com/twqh", object : Callback { override fun onFailure(call: Call, e: IOException) { runOnUiThread { Runnable { Log.d("MainActivity", "请求失败!") } } } override fun onResponse(call: Call, response: Response) { val data = response.body?.string().toString() showData(data) Log.d("MainActivity", "获取到的数据为:$data") } }) } // post接口:按钮点击事件 val json: String = "{\n" + " \"id\": 0,\n" + " \"category\": {\n" + " \"id\": 0,\n" + " \"name\": \"string\"\n" + " },\n" + " \"name\": \"doggie\",\n" + " \"photoUrls\": [\n" + " \"string\"\n" + " ],\n" + " \"tags\": [\n" + " {\n" + " \"id\": 0,\n" + " \"name\": \"string\"\n" + " }\n" + " ],\n" + " \"status\": \"available\"\n" + "}" binding.btSendPost.setOnClickListener { OkHttpUtil.post("https://petstore.swagger.io/v2/pet", json, object : Callback { override fun onFailure(call: Call, e: IOException) { runOnUiThread { Runnable { Log.d("MainActivity", "请求失败!") } } } override fun onResponse(call: Call, response: Response) { val data = response.body?.string().toString() showDataPost(data) Log.d("MainActivity", "获取到的数据为:$data") } }) } } private fun showDataPost(data: String) { val data: JSONObject = JSONUtil.parseObj(data) binding.tvShowPost.text = data.getStr("id") } private fun showData(data: String) { binding.tvShowGet.text = data } }
如存在问题,请在评论区指出留言,感谢!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。