
每天记录学习的新知识 :OKHTTP 过一遍请求
支持HTTP2/SPDY:如果SPDY不可用,通过连接池减少请求延时 智能socket管理:自动选择最优路线,支持自动重连,减少握手次数 缓存策略:基于Headers缓存,减少重复网络请求 Interceptors支持:轻松处理请求与响应(自动处理GZip压缩) 网络问题处理:自动重试多个IP地址 易用性:支持同步阻塞调用和异步调用的混合使用 打开项目属性 进入 在搜索栏输入 错误处理:谨慎处理IOException 防止内存泄漏:关闭response.body() 异步回调:https://square.github.io/okhttp/docs/3.x/faq---- Geçti.xyz
发布日期:2021-05-10 05:21:22
浏览次数:43
分类:精选文章
本文共 2815 字,大约阅读时间需要 9 分钟。
OKHttp 开发者指南
参考与转载
本文为个人学习参考材料,严禁转载请 الطبي要作者授权。如需分享,请注明出处并给予链接。
简介
Square公司出品,OKHttp 是一款开源的HTTP客户端框架,专为Android开发者打造,支持同步和异步请求,基于 Burlap 代理。
优势
使用指南
排他依赖
在Android项目中添加OKHttp依赖:
implementation 'com.squareup.okhttp3:okhttp:3.13.1'
###必需权限
安装OKHttp
依赖管理
com.squareup.okhttp3:okhttp:3.13.1
并点击入库按需创建OKHttpClient
处理同步请求
val call = OkHttpClient().newCall(request) call.execute()
异步请求
val url = "http://example.com" val okHttpClient = OkHttp() val request = Request.newBuilder() .url(url) .get() .build() val call = okHttpClient.newCall(request) call.enqueue(object : Callback{ override fun onFailure(call: Call, exception: IOException) { // 处理失败 } override fun onResponse(call: Call, response: Response) { response.body?.string()?.let { content -> // 处理响应 } } })
发送Post请求
创建RequestBody:
val requestBody = RequestBody.create( MediaType("application/json", "UTF-8"), gson.toJson(mapOf( "phone" to "15612345678", "password" to encodedPwd )) )
使用中自定义请求头:
val request = Request .baseUrl("$baseUrl$DOMAIN1$LOGIN") .headers { add("time", System.currentTimeMillis().toString()) add("requestId", UUID.randomUUID().toString().replace("-", "")) add("Content-Type", "application/json") add("charset", "UTF-8") add("Accept", "application/json") } .post(requestBody) .build()
Retrofit与OKHttp结合使用
在Retrofit中,Post 请求可以如图使用:
@POST("$DOMAIN1$LOGIN") fun login(@Body map: Map): Observable
发送文件
val file = File("路径") val requestBody = RequestBody.create( MediaType("multipart/form-data"), file )
取多个参数
val part1 = Headers.of("Content-Disposition", "form-data; name=\"title\"") val fileBody = RequestBody.create(null, "Square Logo") val part2 = Headers.of("Content-Disposition", "form-data; name=\"image\"") val imageBody = RequestBody.create( MediaType("image/png"), File("图片路径") ) val multipartBody = MultipartBodyBuilder() .setType(MultipartBody.FORM) .addPart(part1, fileBody) .addPart(part2, imageBody) .build()
媒体类型支持
// 图片支持类型: MediaType.IMAGE_PNG = "image/png" MediaType.IMAGE_JPEG = "image/jpeg" MediaType.IMAGE_BMP = "image/bmp"
文件传输
.addFormDataPart("file", "file.jpg", RequestBody.create(MediaType("image/png"), file))
Retrofit中多参数上传
@Multipart @POST("$DOMAIN2/c/file/update") fun updatePic( @PartMap params: Map): Observable
注意事项
通过以上指南,您可以快速掌握如何使用OKHttp和Retrofit完成各种HTTP请求,同时优化网络性能。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月12日 16时42分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
int main(int argc,char* argv[])详解
2019-03-09
【Android踩过的坑】7.Android Studio 点击启动项目时进入调试模式
2019-03-09
【Android小技巧】1.快速查看SDK对应的API Level
2019-03-09
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2019-03-09
C++清空队列(queue)方法
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
【二叉树】已知后序与中序求先序
2019-03-09
数组范围的动态扩容
2019-03-09
如何选择三种验证类型的https证书
2019-03-09
thinkphp使用163/126邮箱发送
2019-03-09
解决Nginx 404 not found问题
2019-03-09
计算机网络之第三章笔记--数据链路层
2019-03-09
Java项目之数据与表格的导出导入操作
2019-03-09
创建型模式之简单工厂模式实例及代码操作
2019-03-09
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09
跟着燕青学分布式事务控制技术方案
2019-03-09
Activiti视频分享
2019-03-09
VS2019 报错: LINK Error 无法找到 MSCOREE.lib的解决办法
2019-03-09
关于JS中的内存溢出与内存泄漏
2019-03-09
Vue——v-model结合值绑定写法
2019-03-09