Kotlin/Android中执行网络请求

news2024/11/27 18:24:27

方式一:使用okhttp3
okhttp官网
okhttp3 github地址

打开build.gradle.kts文件加入依赖

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.9.0")
}

在IDEA的Gradle面板点击reload按钮便会自动下载jar

在这里插入图片描述
使用网络请求时需要把网络的权限打开,不然会提示java.lang.SecurityException: Permission denied (missing INTERNET permission?)诸如此类的报错

在这里插入图片描述
AndroidManifest.xml文件的manifest节点下添加如下代码以表示使用网络权限

<uses-permission android:name="android.permission.INTERNET"/>

为了方便使用可以对okhttp3进行封装一下

MainActivity.kt代码如下

package com.demo.composestudy

import android.content.ContentValues.TAG
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign

import okhttp3.Call
import okhttp3.Callback
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response

import java.io.IOException



class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            showUI()
        }

    }
}



@Composable
fun showUI(){
    var resultstring by remember { mutableStateOf("") }

    Column(){
        Button(
            onClick = {
                var url = "https://www.baidu.com";

                val client = OkHttpClient();


                // 创建一个Request对象
                var request: Request = Request.Builder()
                    .url(url)
                    .build();

                //发起call请求
                val call: Call = client.newCall(request)

                //异步请求
                call.enqueue(object : Callback {
                    override fun onFailure(call: Call, e: IOException) {
                        Log.d(TAG, "onFailure IOException:{$e}");
                    }
                    override fun onResponse(call: Call, response: Response) {
                        //接收返回响应
                        val result = response.body?.string()?:"";

                        resultstring = result;

                        Log.d(TAG, "result:{$result}");
                    }
                });

        }){
        Text("点击进行请求")
    }

    Text(
        "$resultstring",
        Modifier.fillMaxWidth(),
        textAlign = TextAlign.Center,
        style = MaterialTheme.typography.titleMedium
    )

}

}

这里需要使用异步请求,使用同步请求会阻塞Android的UI线程

================================================

方式二:使用Retrofit2
Retrofit官网
Retrofit2快速入门
建议直接使用Retrofit2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1897236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web缓存—Nginx和CDN应用

目录 一、代理的工作机制 二、概念 三、作用 四、常用的代理服务器 二.Nginx缓存代理服务器部署 1.在三台服务器上部署nginx 此处yum安装 2.准备测试界面 三、CDN概念及作用 1.CDN的工作过程 一、代理的工作机制 &#xff08;1&#xff09;代替客户机向网站请求数据…

echarts横向立体3D柱状图

实现原理&#xff1a;series中包含两个普通的柱状图bar&#xff0c;其宽度各占一半且设置间距barGap为0&#xff0c;再添加一个象形柱状图pictorialBar&#xff0c;symbol设为菱形diamond&#xff0c;调整其位置大小层级等数据以达到覆盖在柱状图顶部的立体效果。 运行效果&am…

找不到d3dcompiler43.dll如何修复,分享5种方法助你解决问题

电脑提示找不到d3dcompiler43.dll&#xff0c;这是一个常见的小问题&#xff0c;主要是由于该dll文件丢失所导致。在日常使用电脑的过程中&#xff0c;我们可能会遇到此类丢失问题。为了解决该问题&#xff0c;我们只需进行相关的文件修复操作即可。以下是几种常见的d3dcompile…

电子元器件基础知识总结

1.0 电阻 电阻的定义&#xff1a;导体对电流的阻碍作用称之为电阻【每一种导体都有内阻的存在】 闭合的电路中电子的移动输出有多快&#xff1f;电子在导体中的移动速度是很慢的 【铜线中电流的移动速度】 电子受到原子核的束缚&#xff0c;移动的速度很慢&#xff0c;在电压足…

平安养老险蚌埠中心支公司开展“78奋力前行”健步走活动

7月4日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;蚌埠中心支公司组织员工在张公山公园开展“78奋力前行”健步走活动&#xff0c;传递保险行业的正能量&#xff0c;展现平安养老险的活力与风采。 平安养老险蚌埠中心支公司员工身着…

2024年7月最佳免费天气API接口推荐

在我们的日常生活中&#xff0c;天气扮演着一个至关重要的角色&#xff0c;它影响着我们的情绪、健康、日常安排和商业决策。无论是计划一次户外活动、安排农作物种植&#xff0c;还是确保旅行安全&#xff0c;天气信息的准确性和及时性至关重要。随着技术的进步&#xff0c;天…

百度出品_文心快码Comate提升程序员效率

1.文心快码 文心快码包含指令、插件 和 知识三种功能&#xff0c; 1&#xff09;指令包含Base64编码、Base64解码、JSON转TS类型、JSON转YAML、JWT解码喂JSON。 2&#xff09;插件包含 3&#xff09;指令包含如下功能&#xff1a; 官网链接

vue前端实现导出页面为word(两种方法)

将vue页面导出为word文档&#xff0c;不用写模板&#xff0c;直接导出即可。 第一种方法(简单版) 第一步&#xff1a;安装所需依赖 npm install html-docx-js -S npm install file-saver -S第二步&#xff1a;创建容器&#xff0c;页面使用方法 注意&#xff1a;在当前页面引…

阿里云centos 取消硬盘挂载并重建数据盘信息再次挂载

一、取消挂载 umount [挂载点或设备] 如果要取消挂载/dev/sdb1分区&#xff0c;可以使用以下命令&#xff1a; umount /dev/sdb1 如果要取消挂载在/mnt/mydisk的挂载点&#xff0c;可以使用以下命令&#xff1a; umount /mnt/mydisk 如果设备正忙&#xff0c;无法立即取消…

ESP32CAM物联网教学09

ESP32CAM物联网教学09 摄像头配上显示屏 小智给摄像头配上了一块液晶显示屏,ESP32Cam变得更加酷炫了,应用也更加广泛了。 TFT彩色显示屏从第一课的CameraWebServer开始,我们一直都是利用浏览器来查看显示摄像头的视频流,都需要借助这个网页提供的服务。 可以让ESP32Cam开…

通过营销本地化解锁全球市场

在一个日益互联的世界里&#xff0c;企业必须接触到全球各地的不同受众。营销本地化是打开这些全球市场的关键。它包括调整营销材料&#xff0c;使其与不同地区的文化和语言细微差别产生共鸣。以下是有效的营销本地化如何推动您的全球扩张&#xff0c;并用实际例子来说明每一点…

Windows 安装hadoop 3.4

目录 安装 下载 设置环境变量 配置 修改&#xff1a;hadoop-env.cmd 修改&#xff1a;core-sit.xml 修改&#xff1a;hdfs-site.xml 修改&#xff1a;mapred-site.xml 修改&#xff1a;yarn-site.xml 运行 格式化HDFS文件系统 启动&#xff1a;hadoop 启动&#xf…

kubernetes集群部署:关于CRI(一)

上周接到了一项紧急预研任务&#xff1a;kubernetes各项属性采集。目前我手里已经存在二进制部署的一套kubernetes&#xff08;v1.23版本CRI&#xff1a;dockershim&#xff09;集群&#xff1b;为了适配的广泛性&#xff0c;决定使用kuberadm工具部署最新&#xff08;v1.30版本…

MATLAB-SCSO-CNN-SVM,基于SCSO沙猫群算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

SCSO-CNN-SVM&#xff0c;基于SCSO沙猫群算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xff0c;程序均…

16_更快的速度与精度:Faster R-CNN

回顾R-CNN:链接 回顾Fast R-CNN:链接 1.1 简介 Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用VGG16作推理速度在GPU上达到5fps(包括候选区域的生成)&#xff0c;准确率为网络的backbone&#xff0c;也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中…

2024年全国青少信息素养大赛python编程复赛集训第十天编程题分享

整理资料解析答案非常不容易,感谢各位大佬给个点赞和分享吧,谢谢 今天题目较简单:适合小学组 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准…

智慧生活新篇章,Vatee万腾平台领航前行

在21世纪的科技浪潮中&#xff0c;智慧生活已不再是一个遥远的梦想&#xff0c;而是正逐步成为我们日常生活的现实。从智能家居的温馨便捷&#xff0c;到智慧城市的高效运转&#xff0c;科技的每一次进步都在为我们的生活增添新的色彩。而在这场智慧生活的变革中&#xff0c;Va…

哪个品牌的加密软件稳定方便使用?

一、什么是企业加密软件&#xff1f; 企业加密软件是一种用于保护企业内部数据安全的工具。在数字化时代&#xff0c;随着数据量的爆炸式增长&#xff0c;信息安全和隐私保护变得愈发重要。企业加密软件作为保障数据安全的关键工具&#xff0c;受到越来越多用户的青睐。 企业…

Citrix替换:不只是功能拉齐,更是性能体验的超越

用户在选择Citrix替换方案时&#xff0c;除了关注架构和功能的全面性&#xff0c;也期待着国产桌面办公方案带来的惊喜。 深信服桌面云不仅在基础能力和功能上做到了全面对标Citrix&#xff0c;还在用户极为重视的安全、可靠性、智能监控与排障、信创生态等方面做到了全面超越…

PHP中的运算符与表达式:深入解析与实战应用

目录 一、基础概念 1.1 运算符的定义 1.2 表达式的定义 二、PHP运算符的分类 2.1 算术运算符 2.2 赋值运算符 2.3 比较运算符 2.4 逻辑运算符 2.5 位运算符 2.6 字符串运算符 2.7 错误控制运算符 三、表达式的优先级与结合性 3.1 优先级 3.2 结合性 四、实战应…