安卓在网络请求上的应用(一)

简介: 已经在工作接了不少次服务器请求接口,之前都是跟着模仿前人的代码,很少去总结,正好,现在把这一知识融汇贯通一下,也算一收获。本篇文章围绕网络请求展开,来聊聊安卓中如何去实现这任务的,当然,我事先也在众多大神博客中了解到网络请求有很多方法,不止我这一种,如有错误,烦请指正。

正篇

通过对代码的阅读,工作中我用的应该是Retrofit2请求方法,如下: 首先先定义一个接口文件, get请求样式:

public interface Api {
    //get请求
    @GET("user")  //请求方法注解,get请求,括号内的是请求地址,Url的一部分
    Call<ResponseBody> getData();//Call<*>返回类型,*表示接收数据的类,一般自定义 接口方法名称,括号内可以写入参数
}

post请求实例:

@POST("XXXX")
@Headers({"Content-Type: application/x-www-form-urlencoded;charset=utf-8","CONNECT_TIMEOUT:20000", "READ_TIMEOUT:20000", "WRITE_TIMEOUT:20000"}) //定义头部
Call<ResponseBody> getXXXXXXX(
        @Body RequestBody requestBody
);

我写的是用单例实现的:

//单例
private Retrofit2Manager() {
    retrofitMap = new ConcurrentHashMap<>();
    client = new OkHttpClient.Builder().
            connectTimeout(30, TimeUnit.SECONDS).
            readTimeout(30, TimeUnit.SECONDS).
            writeTimeout(30, TimeUnit.SECONDS).
            connectionPool(new ConnectionPool(5,30,TimeUnit.SECONDS)).build();
}
public <T> T getApi(Class<T> clz, String url) {
    if (retrofitMap.get(url) == null) {
        synchronized (retrofitMap) {
            if (retrofitMap.get(url) == null) {
                Retrofit retrofit = new Retrofit.Builder()
                        .addConverterFactory(GsonConverterFactory.create())
                        .baseUrl(url)
                        .client(client)
                        .build();
                retrofitMap.put(url, retrofit);
            }
        }

把我们需要的请求的url以及对应的结构体类传进去,然后再用:

Call<ResponseBody> call

去创建Call对象用于callback监听回调获取返回体从而拿到我们想要的返回值。

call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                if(response.code()== HttpURLConnection.HTTP_OK){
                    if (response.body() == null) {
                        return;
                    }
                    String jsonStr= null;
                    try {
                        jsonStr = response.body().string();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                   ...
                }
                @Override
                public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {...}
             });

这样看起来应用还是蛮简单的,下一节我们将具体探讨retrofit的使用,本节为应用示例。

小结

在写文章的时候顿了很多次,因为我对这块研究还不是很深,代码不是特别熟练,所以后续还会深入探讨,展开去说说,顺便拓展其他请求方法。

相关文章
|
1月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
3月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
190 6
|
7月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
759 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
7月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
329 64
|
6月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
2月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
387 11
|
7月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
329 0
中国联通网络资源湖仓一体应用实践
|
3月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
247 0
|
3月前
|
安全 Linux
利用Libevent在CentOS 7上打造异步网络应用
总结以上步骤,您可以在CentOS 7系统上,使用Libevent有效地构建和运行异步网络应用。通过采取正确的架构和代码设计策略,能保证网络应用的高效性和稳定性。
131 0
|
6月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
221 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
下一篇
oss云网关配置