前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天,我将献上一份非常详细Retrofit v2.0的使用教程,希望你们会喜欢...Android:网络请求库Retrofit使用教程 Carson带你学Android:网络请求库Retrofit源码分析 Carson带你学Android:图片加载库Glide使用教程 Carson...将 Http请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数 用 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求 注:接口中的每个方法的参数都需要使用注解标注...关于网络请求适配器(CallAdapter) Retrofit支持多种网络请求适配器方式:guava、Java8和rxjava 使用时如使用的是 Android 默认的 CallAdapter,则不需要添加网络请求适配器的依赖...Retrofit 的拓展使用 Retrofit的使用场景非常丰富,如支持RxJava和Prototocobuff 具体设置也非常简单 & 方便: Retrofit
字段名称和值将先进行UTF-8进行编码,再根据RFC-3986进行URI编码。 2、@Multipart:作用于方法 使用该注解,表示请求体是多部分的,每个部分作为一个参数,且用Part注解声明。...(四)其他注解: 1、@Path:用于方法的参数 在URL路径中替换指定参数值。使用String.valueOf()和URL编码将值转换为字符串。...尽量只用在URL的path部分,url的参数使用Query、QueryMap代替,保证接口的简洁 4、Query、Field、Part支持数据和实现了iterable接口的类型,如List、Set等,方便向后台传递数组...如果表单中有上传文件,编码类型需要使用"multipart/form-data",类型,才能完成传递文件数据。...七、总结 Retrofit将REST API抽象成Java接口,使用注解来描述每一个API地址和请求,支持URL参数替换(包括查询参数和路径参数),以及表单编码和多部分请求功能。
,wrap_content,weight 图片资源,不同图片的的分辨率,放在相应的文件夹下可使用百分比代替。...如果只是作为列表展示,则两者区别并不是很大。 14,Android异步消息处理机制(这个也会经常问到) 异步消息处理机制主要是用来解决子线程更新UI的问题 主要有四个部分: ①....默认实现了较多缓存算法,如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等; ④ 支持本地缓存文件名规则定义; 缺点: 缺点在于不支持GIF图片加载, 缓存机制没有和...okhttp针对Java和Android程序,封装的一个高性能的http请求库,支持同步,异步,而且okhttp又封装了线程池,封装了数据转换,封装了参数的使用,错误处理等。API使用起来更加的方便。...SD卡和内存中,之后运行APP时,优先访问内存中的图片缓存,若内存中没有,则加载本地SD卡中图片,最后选择访问网络 20.Android与服务器交互的方式中的对称加密和非对称加密是什么?
:converter-gson:2.9.0") 注解 Retrofit使用大量注解来简化请求,Retrofit将okhttp请求抽象成接口,使用注解来配置和描述网络请求参数。...,用于添加不固定的header,它会更新已有请求头 请求参数注解 请求参数注解 说明 @Body 多用于Post请求发送非表达数据,根据转换方式将实例对象转化为对应字符串传递参数,比如使用Post发送...Json数据,添加GsonConverterFactory则是将body转化为json字符串进行传递 @Filed 多用于Post方式传递参数,需要结合@FromUrlEncoded使用,即以表单的形式传递参数...@FiledMap 多用于Post请求中的表单字段,需要结合@FromUrlEncoded使用 @Part 用于表单字段,Part和PartMap与@multipart注解结合使用,适合文件上传的情况...如果没有使用注解,默认会把数据全部载入到内存中,该注解在下载大文件时特别有用 参数示例 URL上的参数 @GET("user") Call getData2(@Query(
,wrap_content,weight 图片资源,不同图片的的分辨率,放在相应的文件夹下可使用百分比代替。...如果只是作为列表展示,则两者区别并不是很大。 14,Android异步消息处理机制(这个也会经常问到) 异步消息处理机制主要是用来解决子线程更新UI的问题 主要有四个部分:### ①....默认实现了较多缓存算法,如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等; ④ 支持本地缓存文件名规则定义; 缺点: 缺点在于不支持GIF图片加载, 缓存机制没有和...okhttp针对Java和Android程序,封装的一个高性能的http请求库,支持同步,异步,而且okhttp又封装了线程池,封装了数据转换,封装了参数的使用,错误处理等。API使用起来更加的方便。...SD卡和内存中,之后运行APP时,优先访问内存中的图片缓存,若内存中没有,则加载本地SD卡中图片,最后选择访问网络 20.Android与服务器交互的方式中的对称加密和非对称加密是什么?
Retrofit 早已不是什么新技术了,想必看到这篇博客的大家都早已熟知,这里就不啰嗦了,简单介绍下: Retrofit 是一个针对 Java 和 Android 的设计的 REST 客户机。...它通过基于 REST 的 web 服务检索和上传 JSON (或其他结构化数据)变得相对容易。在使用中,您可以配置用于数据序列化的转换器。...= new FormBody .Builder() //设置参数名称和参数值 .add("username",mAccountEdit.getText...和 password 是怎么的话,我这里简单说下 比如说我们现在随便打开一个网页,就拿百度图片里搜索 Github 页面为例: 后端写服务器的同学会通过这些参数,像 HashMap get(“...登录功能实战 到这里想必大家都已经学会了 Retrofit 的使用 那么现在我就拿登录功能举例,看看如何在项目中引用 Retrofit 实战部分先置条件是 MVP + ButterKnife,大家很容易在网上找到资料
前言 在上一篇Android网络编程(九)Retrofit2前篇[基本使用]中我们了解了Retrofit的最基本的GET方式访问网络的写法以及请求参数的简单介绍。...但是在网络请求中一般为了更精确的查找到我们所需要的数据,需要传入很多的查询参数,如果用@Query会比较麻烦,这时我们可以采用@QueryMap,将所有的参数集成在一个Map统一传递: ?...传输数据类型Json字符串:@Body 我们也可以用POST方式将Json字符串作为请求体发送到服务器,请求网络接口代码为: ?...Multipart注解表示允许多个@Part,updateUser方法第一个参数是准备上传的图片文件,使用了MultipartBody.Part类型,另一个参数是RequestBody类型,它用来传递简单的键值对...多个文件上传:@PartMap ? 和单文件上传是类似的,只是使用Map封装了上传的文件,并用@PartMap注解来标示起来。其他的都一样,这里就不赘述了。
Android消息传递实现方式有很多种,有Handler、本地广播和全局广播、Intent、接口回调、观察者模式等,Handler可以实现线程间的通信,使用场景包括处理种类繁多的事件,子线程与主线程的切换等...;BroadcastReceiver可以实现进程间通信,主要用来接收一些系统广播,也可用进行组件之间的通信,如Service和Activity之间的通信;Intent可以完成两个组件之间的通信,传递一些简单的数据...使用OkHttp非常简便,它的请求和响应的API大都采用建造者模式设计。 6 Retrofit Retrofit是一个类型安全的HTTP的客户端,在Android和Java中都可使用。...Volley是对网络库HttpURLConnection和HttpClient的封装,由于Volley良好的扩展性,它还可以配置成使用OkHttp来作为自己的底层网络库,而Retrofit则是对OkHttp...可观察说明ReactiveX使用观察者模式,异步说明可以完成多线程编程,事件说明会涉及事件的传递和处理。
上一篇文章深入浅出Retrofit2.x(一)中,我们讲解了 Retrofit 的最基本用法,以及 GET 请求示例,非常简单,相信大家都已经会使用了,本篇文章将继续介绍 Retrofit 的一些其他的一些常用用法...,主要围绕如何使用 POST 请求提交表单数据,提交 json 字符串作为请求体,还有一些 Retrofit 的相关注解介绍等。...@Path 用于 url 中的占位符 @Query 用于 GET 请求的 url 中指定 key=value 参数 @QueryMap 和 @Query 使用类似 @Url 指定请求路径,可以是全路径和相对路径...,需要配合使用 @Part @Streaming 表示响应用字节流的形式返回,如果没使用该注解,默认会把数据全部载入到内存中,该注解在在下载大文件的特别有用 好了,前两篇的分享已经完了,主要是围绕 Retrofit...猜你喜欢: 给大家推荐一个神器 深入浅出Retrofit2.x(一) 不得不会的10点Java基础知识 Android 最全 Intent 传递数据姿势
不建议使用官方JSONObject解析,容易出错 实体类属性名与json中字段名完全一致 json中字段名全部使用英文,不可英文、拼音夹杂 用户表识建议使用Cookie 建议使用POST解析,它对参数数量没有要求...,persenter负责调用model,并将结果返回给view供其展示 MVP: MVP模式相当于在MVC模式中又加了一个Presenter用于处理模型和逻辑,将View和Model完全独立开,在android...同时将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载...使用复杂的图片压缩转换来尽可能的减少内存消耗 自带内存和硬盘二级缓存功能 Fresco: 优点: 最大的优势便在于5.0以下(最低2.3) bitmap的加载,在5.0以下系统,Fresco将图片放到一个特别的内存区域...要注意:以上添加了Retrofit、RxJava和Gson依赖,版本号必须一致 b、登录Service ? login方法的返回值是Observable类型,就是RxJava中的被观察者。
),接口中有一个空的方法,在fragment中需要的时候调用接口的方法,值可以作为参数放在这个方法中,然后让Activity实现这个接口,必然会重写这个方法,这样值就传到了Activity中 Fragment...原理:App应用程序通过Retrofit请求网络,实际上是使用Retrofit接口层封装请求参数,Header、URL等信息,之后由OKHttp完成后续的请求,在服务器返回数据之后,OKHttp将原始的结果交给...retrofit使用 1.在retrofit中通过一个接口作为http请求的api接口 public interface NetApi { @GET("repos/{owner}/{repo}/...在build.grade里面配置: [image] 资源冲突 当我们创建了多个Module的时候,如何解决相同资源文件名合并的冲突,业务Module和BaseModule资源文件名称重复会产生冲突,解决方案在于...比如使用 Android Lint 删除冗余资源,资源文件最少化等。 图片优化。比如利用 PNG优化工具 对图片做压缩处理。推荐目前最先进的压缩工具Googlek开源库zopfli。
原理:App应用程序通过Retrofit请求网络,实际上是使用Retrofit接口层封装请求参数,Header、URL等信息,之后由OKHttp完成后续的请求,在服务器返回数据之后,OKHttp将原始的结果交给...retrofit使用 1.在retrofit中通过一个接口作为http请求的api接口 public interface NetApi { @GET("repos/{owner}/{repo}/...资源冲突 当我们创建了多个Module的时候,如何解决相同资源文件名合并的冲突,业务Module和BaseModule资源文件名称重复会产生冲突,解决方案在于: 每个 module 都有 app_name...比如使用 Android Lint 删除冗余资源,资源文件最少化等。 图片优化。比如利用 PNG优化工具 对图片做压缩处理。推荐目前最先进的压缩工具Googlek开源库zopfli。...原始类型和带参数类型之间的主要区别是,在编译时编译器不会对原始类型进行类型安全检查,却会对带参数的类型进行检查,通过使用Object作为类型,可以告知编译器该方法可以接受任何类型的对象,比如String
:gson:2.8.0' 3.常用注解 这里介绍一些常用的注解的使用 @Query、@QueryMap:用于Http Get请求传递参数 @Field:用于Post方式传递参数,需要在请求接口方法上添加...@FormUrlEncoded,即以表单的方式传递参数 @Body:用于Post,根据转换方式将实例对象转化为对应字符串传递参数.比如Retrofit添加GsonConverterFactory则是将body...转化为gson字符串进行传递 @Path:用于URL上占位符 @Part:配合@Multipart使用,一般用于文件上传 @Header:添加http header @Headers:跟@Header作用一样...,只是使用方式不一样,@Header是作为请求方法的参数传入,@Headers是以固定方式直接添加到请求方法上 ReTrofit基本使用: 首先给定一个测试接口文档,后面的博客中我们都是用这个接口调试...6.强调 很多兄弟通过QQ群反馈给我说,使用一个接口需要写一个对应的api类继承BaseApi是不是很麻烦,我这里强调一下,这样封装是为了将一个Api接口作为一个对象去封装,个人觉得有必要封装成一个类,
DB_VERSION DB_NAME 图片资源文件 建议用模块名称+逻辑名称 book_cover_default.png book_type_online.png Layout命名 建议用模块名称+逻辑名称...books_comment.xml books_comment_item.xml Layout中的id命名 建议用layout文件名称做前缀+逻辑名称+view缩写 @+id/books_comment_item_bookcover_iv...@+id/books_comment_item_nickname_tv 注释规范 /** * 项目名称 * 包名 * * 文件描述:TODO * 创 建 人:TODO * 创建时间:2016...文件中添加配置文件的引用 //应用配置文件 apply from: "config.gradle" buildscript { repositories { jcenter()...testin免费移动App真机云测试平台 Emmagee网易出品的,是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。
其效果相当于多个应用共享一个应用,不管谁激活该 Activity 都会进入同一个应用中。使用场景如闹铃提醒,将闹铃提醒与闹铃设置分离。...从顶层父View向子View的递归调用view.layout方法的过程,即父View根据上一步measure子View所得到的布局大小和布局参数,将子View放在合适的位置上。...中的public方法 22、Android UI适配 字体使用sp,使用dp,多使用match_parent,wrap_content,weight 图片资源,不同图片的的分辨率,放在相应的文件夹下可使用百分比代替...JS去调用Android的代码 通过WebView的addJavascriptInterface()进行对象映射 ,该方法使用简单,仅将Android对象和JS对象映射即可,但是存在比较大的漏洞。...okhttp针对Java和Android程序,封装的一个高性能的http请求库,支持同步,异步,而且okhttp又封装了线程池,封装了数据转换,封装了参数的使用,错误处理等。API使用起来更加的方便。
将原始的结果交给 Retrofit,Retrofit根据用户的需求对结果进行解析 除了Retrofit,如今Android中主流的网络请求框架有: Android-Async-Http Volley...将 Http请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数 用 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求 注:接口中的每个方法的参数都需要使用注解标注...@Query和@QueryMap 作用:用于 @GET 方法的查询参数(Query = Url 中 ‘?’...关于网络请求适配器(CallAdapter) Retrofit支持多种网络请求适配器方式:guava、Java8和rxjava 使用时如使用的是 Android 默认的 CallAdapter,则不需要添加网络请求适配器的依赖...Demo地址 Carson_Ho的Github:https://github.com/Carson-Ho/RetrofitDemo Retrofit的使用场景非常丰富,如支持RxJava和Prototocobuff
将 Http请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数 用 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求 注:...@Query和@QueryMap 作用:用于 @GET 方法的查询参数(Query = Url 中 ‘?’...cate=android,其中,Query = cate 具体使用:配置时只需要在接口方法中增加一个参数即可: @GET("/") Call cate(@Query...关于网络请求适配器(CallAdapter) Retrofit支持多种网络请求适配器方式:guava、Java8和rxjava 使用时如使用的是 Android 默认的 CallAdapter,则不需要添加网络请求适配器的依赖...Retrofit 的拓展使用 Retrofit的使用场景非常丰富,如支持RxJava和Prototocobuff 具体设置也非常简单 & 方便: Retrofit
} }); } } 很简单,将数据塞给adpter。 ViewModel 和View <?xml version="1.0" encoding="utf-8"?...data 部分import 导入需要使用的包,如textView的 visibility需要 View.VISIBLE 常数,存在于 android.view.View类。...#expression_language (5) 特殊情形,如这里是imageView,我想让其自动加载图片。...自定义 bind:load = "@{viewModel.imageUrl}" load方法时,我们通过url参数,直接在网上下载该图片。...这里还有点特殊,imageView没有使用Glide加载图片的接口,故扩展了load方法,详见CustomImage。
是 Paging3 当中重要成员 ) 使用 Data Mapper 分离数据源 和 UI Kotlin Flow 结合 Retrofit2 + Room 的混合使用 Kotlin Flow 与 LiveData...Fragment 1.2.0 上重要的更新:通过 Fragment 的构造函数传递参数,以及 FragmentFactory 和 FragmentContainerView 的使用 我近期也在开发另外一个...Kotlin Flow 如何在 MVVM 中使用? Kotlin Flow 如何与 Retrofit2 + Room 混合使用?...Flow 是协程的扩展,如果要在 Room 和 Retrofit 中使用,Room 和 Retrofit 需要支持协程才可以,在 Retrofit >= 2.6.0 和 Room >= 2.1 版本都支持协程...,我们来看一下 Room 和 Retrofit 数据源的配置。
领取专属 10元无门槛券
手把手带您无忧上云