Tip | OkHttp使用

简介: OkHttp简介和使用
  • OkHttp由Square公司开发,其不仅在接口封装上面做的简单易用,

就连在底层实现上也是自成一派,
比起原生的HttpURLConnection,可以说是有过之而无不及,
现在已经成了广大Android开发者的首选网络通信库。

打开app/buid.gradle,在dependencies闭包中添加如下内容:

    implementation("com.squareup.okhttp3:okhttp:3.14.0")

添加此依赖,会自动下载两个库:OkHttp库、Okio库(是前者的通信基础)。

  • 注意,添加前最好是访问一下OkHttp项目主页查看当前最新的版本是多少,再在gradle处添加依赖;
下面是OkHttp具体用法
  • 首先,需要创建OkHttpClient实例,如下:
OkHttpClient client = new OkHttpClient();
  • 接下来,如想发起一条HTTP请求,需创建Request对象
Request request = new Request.Builder().build();
  • 当然上述代码只是创建一个空的Request对象,

需要在build()方法之前可连缀很多其他方法丰富此Request对象。

Request request = new Request.Builder()
.url("https://www.baidu.com")
.build();
  • 之后调用OkHttpCilent的newCall()方法创建一个Call对象

并调用它的execute()方法发送请求
获取服务器返回的数据:

Response response = client.newCall(request).execute();
  • request存请求;
  • newCall接收request
  • execute执行request
  • Response对象接收服务器返回的数据;
  • 下面得到返回的具体内容
String responseData = response.body().string();



如果发起一条POST请求,会比GET复杂些;

  • 需先构建RequestBody对象存放待提交的参数
RequestBody requestBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "123456")
.build();
  • 然后在Request.Builder中以RequestBody对象为传入的参数调用post()方法,:
Request request = new Request.Builder()
.url("http://www.baidu.com")
.post(requestBody)
.build();
  • 接下来的操作就和GET请求一样了,

调用execute()方法发送请求并获取服务器返回的数据即可。


另外注意OkHttp可以把最后执行的execute()方法换成enqueue(callback)
即调用enqueue()并接收一个框架提供的okhttp3.Callback接口;

public static void sendOkHttpRequest(String address, okhttp3.Callback callback){
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(address).build();
                    client.newCall(request).enqueue(callback);//enqueue方法内部已经开好了子线程
        }

使用时,复写okhttp3.Callback
onResponse()onFailure()两个方法,
处理成功请求请求失败的情况;

sendOkHttpRequest("https://www.baidu.com", new okhttp3.Callback(){
    @Override
    public void onResponse(Call call, Response response) throws IOException{
        //得到服务器返回的具体数据
        String reponseData = reponse.body().string();
}
    @Override
    public void onFailure(Call call, IOException e){
        //在这里对异常情况进行处理
}
});
相关文章
|
数据采集 数据可视化 Python
在Python中进行数据清洗和预处理缺失值处理查看缺失值比例
在Python中进行数据清洗和预处理缺失值处理查看缺失值比例
271 5
|
7月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
421 2
|
8月前
|
人工智能 自然语言处理 安全
通过阿里云Milvus与PAI搭建高效的检索增强对话系统
阿里云向量检索Milvus版是一款全托管的云服务,兼容开源Milvus并支持无缝迁移。它提供大规模AI向量数据的相似性检索服务,具备易用性、可用性、安全性和低成本等优势,适用于多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等场景。用户可通过PAI平台部署RAG系统,创建和配置Milvus实例,并利用Attu工具进行可视化操作,快速开发和部署应用。使用前需确保Milvus实例和PAI在相同地域,并完成相关配置与开通服务。
|
IDE Java Maven
【Java】已解决:java.lang.NoSuchMethodError异常
【Java】已解决:java.lang.NoSuchMethodError异常
5300 0
|
9月前
|
供应链 监控 Oracle
SCM供应链管理的核心要素及常用工具详解
理解供应链管理的7大关键要素,并借助专业的软件工具,企业可以更加高效地管理各个环节,提升整体运营效率。
1154 3
SCM供应链管理的核心要素及常用工具详解
|
JavaScript 前端开发 UED
如何在JS中实现修改URL参数而不刷新页面
如何在JS中实现修改URL参数而不刷新页面
636 2
|
11月前
|
存储 JSON NoSQL
MongoDB Compass 的教程
这篇文章提供了MongoDB Compass的基本使用教程,包括如何建立数据库连接、创建和删除数据库、插入和修改文档数据,以及执行聚合查询来分析和排序数据。
2777 0
MongoDB Compass 的教程
|
缓存 Java API
OKHttp详解
OKHttp详解
|
JavaScript C++
js【详解】比较(数字与数字比较、数字与字符串比较、字符串与字符串比较、字符串与非数字比较……)
js【详解】比较(数字与数字比较、数字与字符串比较、字符串与字符串比较、字符串与非数字比较……)
247 0
|
存储 缓存 Linux
Linux用户态协议栈与DPDK构建高性能应用
本文深入探讨了如何利用Linux用户态协议栈与DPDK构建高性能应用的方法和技巧。在现代网络编程中,性能是至关重要的,特别是在需要处理大量并发连接的场景下。传统的内核态网络栈在面对高负载时可能会遇到性能瓶颈,而本文介绍了如何借助用户态协议栈和DPDK来突破这些限制。从零开始搭建一个基于用户态协议栈和DPDK的网络应用并不是一件容易的事情,但本文将通过实际示例和步骤指导读者完成这一过程。最后,本文总结了使用用户态协议栈和DPDK构建高性能应用的益处,并展望了这些技术在未来网络设计中的潜在作用。
655 0
Linux用户态协议栈与DPDK构建高性能应用

热门文章

最新文章