ObservableRetrofit 的童鞋肯定明白,Retrofit 只能返回一个 ReponseBody,为什么 ReponseBody ->Observable...额,这里,如果你们的后端和 youyou 一样的话,应该是不需要的,而我这里有些历史遗留问题,所以…额 如果你仔细看过开头的流程图的话,会发现,如果错误产生,response.body() 返回的是 null...Class type, Retrofit retrofit) throws IOException { if (response == null || response.errorBody...() == null) { return null; } Converter converter = retrofit.responseBodyConverter...(type, new Annotation[0]); return converter.convert(response.errorBody()); } 就这样,我多了一段这样的代码来解析服务器端返回的错误信息
一、概述 Retrofit是Square公司开发的一个类型安全的Java和Android 的REST客户端库。...关于REST的介绍可以参考维基百科 retrofit模型如下:(来自如何使用Retrofit写一个Android的REST客户端的小教程) retrofit模型...依赖于okhttp,所以需要集成okhttp API返回的数据为JSON格式,在此我使用的是Gson对返回数据解析 添加权限 由于是网络请求,需要在manifest中添加网络请求的权限 android:name="android.permission.INTERNET"/> 创建实体类 这是使用Gson解析,需要创建一个POJO(Java对象)。...Tips: 当返回结果错误,调用response.errorBody().string();可以得到String类型的请求结果,但再次调用response.errorBody().string();得到的结果为
前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天,我将手把手带你深入剖析Retrofit v2.0的源码,希望你们会喜欢...与其他网络请求开源库对比 除了Retrofit,如今Android中主流的网络请求框架有: Android-Async-Http Volley OkHttp 下面是简单介绍: 一图让你了解全部的网络请求库和他们之间的区别...只打算利用OkHttpCall通过ExecutorCallbackCall切换线程;但后来发现使用Rxjava更加方便(不需要Handler来切换线程)。...= 0) { return new Android(); // 此处表示:如果是Android平台,就创建并返回一个Android对象 ->>步骤4 }...支持3个平台:Android平台、Java平台、IOS平台 // 最后返回一个Platform对象(指定了Android平台)给Builder的有参构造方法public Builder(Platform
return new ParameterHandler.Body(converter); } //如果上面都处理,则说明使用了一个非Retrofit的的注解,返回null...3、遍历这类的所有方法 4、由于Platform.Android没有重写isDefaultMethod(),所以platform.isDefaultMethod(method)默认返回false,Platform.Java8...= null) { //如果adapter不为null,则返回adapter return adapter; } } // 如果遍历了,还是没有合适的...null,所以只有重写过才会不为null if (converter !...()方法我们前面已经说过了,返回的是Android对象 2、入参是platform的构造函数,内部add了一个BuiltInConverters对象,可见converterFactories至少是一个转化器的
Android MVVM框架搭建(二)Retrofit + RxJava 前言 正文 一、引入依赖 二、工具类 三、构建网络框架 1. Base 2. 异常处理 3. 拦截器 4....= null && iNetworkRequiredInfo.isDebug()) { //iNetworkRequiredInfo不为空且处于debug状态下则初始化日志拦截器...= null) { //刚才上面定义的Map中键是String,值是Retrofit,当键不为空时,必然有值,有值则直接返回。...(), retrofit); //最后返回即可 return retrofit; } /** * 配置RxJava 完成线程的切换...做上层网络请求接口的封装,同时将需要的数据解析成实体,同时Retrofit还有对RxJava的支持,这样就可以在请求的时候做线程切换,切换到子线程,在数据返回的时候切换到主线程。
个人博客地址 http://dandanlove.com/ Android网络之Retrofit2.0使用和解析 Retrofit2在项目中的使用 Android studio项目添加依赖 javacompile...通过在Retrofit创建时生成的Converter再将OkHttp返回的数据进行类型转换得到自己需要的数据。...Platfrom class Platform { //这个方法Android中为Plafrom默认的 //Java8返回的是method.isDefault(),熟悉Java8...Executor defaultCallbackExecutor() { return null; } static class Android extends...但看完Retrofit代码之后觉得收获很大,建议如果感兴趣可以抽时间仔细的阅读。
= null && iNetworkRequiredInfo.isDebug()){ //iNetworkRequiredInfo不为空且处于debug状态下则初始化日志拦截器...= null) { //刚才上面定义的Map中键是String,值是Retrofit,当键不为空时,必然有值,有值则直接返回。...(), retrofit); //最后返回即可 return retrofit; } 四、配置RxJava RxJava是对OkHttp的请求返回做处理,那么这个就涉及到线程的切换和异常的处理...= null ?...六、自定义Observer 在上面的代码中完成了对OkHttp的优化,OkHttp负责网络访问,使用Retrofit发起网络请求,使用RxJava处理返回结果,在上面只是做了线程的切换和错误码的处理
去年的时候学习了Rxjava和Retrofit的基本用法,但一直没有在实际项目中运用。今年开做新项目,果断在新项目中引入了RxJava和Retrofit。...} } RetrofitUtils用来构建Retrofit.Builder,并对OkHttp做以下几个方面的配置: 设置日志拦截器,拦截服务器返回的json数据。...其中code为服务器返回的错误码。我们会事先和服务器约定成功时的code值,比如200表示请求成功。但通常在请求服务器数据过程中免不了会出现各种错误。例如用户登录时密码错误、请求参数错误的情况。...此时服务器会根据错误情况返回对应的错误码。一般来说,我们只关心成功时即code为200时的content数据。而对于code不为200时我们只需要给出对应的Toast提示即可。...*/ abstract public void onSuccess(T response); /** * 服务器返回数据,但响应码不为200 *
.build(); return retrofit.create(serviceClass);//返回这个创建好的API服务 } } 接下来重写...com.llw.mvplibrary.base.BaseResponse; import retrofit2.Call; import retrofit2.Callback; import retrofit2...框架里面的,这个框架是对OKHttp的进一步封装,会让你的使用更加简洁明了,里面放入之前通过接口返回 * 的JSON字符串生成返回数据实体Bean,Retrofit支持Gson解析实体类,...= null) {//当视图不会空时返回请求数据 getView().getTodayWeatherResult(response);...= null) {//得到数据不为空则进行数据显示 //数据渲染显示出来 tvTemperature.setText(response.body().getHeWeather6
前言 简书上data-binding 的文章不少,但真正用来实现MVVM架构的文章不多。...:glide:3.7.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.android.support...:cardview-v7:24.1.1' 这里本来demo不应该引入其他的库的,但为了方便写demo,故添加了retrofit来请求数据,glide来加载图片。...回调获取返回结果: public class ServiceGenerator { public static final String API_BASE_URL = "http://gank.io..."; private static Retrofit retrofit = new Retrofit.Builder() .baseUrl
Builder也有缺点:对多生成Builder对象,增加开销,但总的来说在一些场景下还是利大于弊。 工厂模式 Retrofit的Converter和Adapter都是由抽象工厂模式来生成的。..., retrofit2.Response<Student> response) { //返回数据回调到主线程中处理,这里切换到了主线程进行操作 } @Override...= 0) { //如果是Android平台,就返回Android对象 return new Android(); } } catch (ClassNotFoundException...")); return this; } build方法 public Retrofit build() { //baseUrl必须要,否则抛异常 if (baseUrl == null...<>(this.converterFactories); //返回配置好的retrofit对象 return new Retrofit(callFactory, baseUrl, converterFactories
.build(); return retrofit.create(serviceClass);//返回这个创建好的API服务 } } 接下来重写...框架里面的,这个框架是对OKHttp的进一步封装,会让你的使用更加简洁明了,里面放入之前通过接口返回 * 的JSON字符串生成返回数据实体Bean,Retrofit支持Gson解析实体类,...所以,后面的返回值就不用做解析了。...= null) {//当视图不会空时返回请求数据 getView().getTodayWeatherResult(response);...= null) {//得到数据不为空则进行数据显示 //数据渲染显示出来 tvTemperature.setText(response.body().getHeWeather6
Retrofit是什么 Retrofit是一个类型安全的HTTP客户端,支持Android和Java.它是Square公司开源的项目,当前版本2.0。...同步和异步,和终止 Retrofit 1.x 时,在服务接口的声明中,同步方法需要一个返回值,异步方式需要一个 Callback 的泛型参数作为最后一个参数。...2.x不再以参数和返回值的方式区分异步同步的请求。 “调用”的区别 Retrofit 1.9 时 同步是直接调用。 而异步需要传入回调的实现。在实现里处理成功和失败的方法。...response.code(); // handle request errors yourself ResponseBody errorBody = response.errorBody...你可以使用 Observable 作为接口声明的返回值。 第二个依赖是 AndroidSchedulers 类所需要的,它提供了 在Android主线程的调度方式。
Retrofit的出现让Android的网络请求变得异常简单,同时可以很好的配合后台的REST接口。非常值得我们去探究一下它的原理。...在Retrofit中,内置了两种平台,一种是Android,一种是Java8。不同的平台,处理的方式不同。...平台里是返回了MainThreadExecutor,里面提供了一个handler,并且这个handler是传入的主线程的Looper,也就是说在execute方法里面,handler.post实际上是在主线程...method, @Nullable Object[] args) throws Throwable { // 方法定义所在的类,这里我们是定义在接口里面,返回...总结 Retrofit在创建的过程中,有这么一些东西需要我们注意 platform 这个是Retrofit支持的平台,里面有Android和Java8,这里自然是Android callFactory
> get(Type returnType, Annotation[] annotations, Retrofit retrofit) 的注释:返回一个CallAdapter的实例,如果工厂无法处理则返回...的Converter(转换器),转入类型ResponseBody,如果因为type(类型)无法处理,工厂无法处理,则返回null。...如果类型不能处理,则返回null。...但适配前和适配后的Call 还是不一样的,从enqueue方法中可以看到在callbackExecutor执行了回调,callbackExecutor上文已经介绍了,在Android平台就是UI主线程。...但实际上他们混淆了Java中的interface和面向接口编程的"接口的"概念。
Retrofit 早已不是什么新技术了,想必看到这篇博客的大家都早已熟知,这里就不啰嗦了,简单介绍下: Retrofit 是一个针对 Java 和 Android 的设计的 REST 客户机。...是结合 OkHttp 做网络请求用的,所以悉心提醒记得开下网络权限: android:name="android.permission.INTERNET" /> 全面进击...但细心观察发现,第一步 Retrofit 的实例化过程,只要服务器不换代码几乎是不变的,所以我们完全可以将它封装 而且大家有没有发现,如果单单使用 OkHttp 我们的返回值是一个 Response...的使用都已近有了一定的了解,但 Retrofit 的好处并不只是这些,还有很多跟深入的只是需要了解,但本文限于篇幅,无法向大家一一介绍 对于我前面的 FIWKeepApp 这个仓库,我将一步步转换到...Retrofit + OkHttp 的形式下,欢迎大家关注我的 这个仓库,进行学习,也欢迎各位老铁给个 star 后面我还会对 Android 的各种知识点、Framework 层源码,三方库等进行解析
引言 Retrofit是Square公司开发的一款针对Android网络请求的框架,遵循Restful设计风格,我们查看 invoke 可以发现:底层基于OkHttp实现的 ,相比其他网络请求框架...数据解析器工厂集合 callbackExecutor 回调执行,Android平台默认为MainThreadExecutor Platform Retrofit中用来管理多平台的方法,支持Android...RxJavaCallAdapter对象 RxJavaCallAdapter Rxjava平台的设配器,返回observable对象 GsonConverterFactory 数据解析工厂实例,返回了GsonResponseBodyConverter...= null ?...适配器模式 CallAdapter的adapt采用了适配器模式,使得interface的返回对象可以动态扩展,增强了灵活性 CallAdapter的种类 Converter种类 Retrofit支持多种数据解析方式
项目配置在 Android 中,我们可以使用 Retrofit 作为网络请求库,并通过 SharedPreferences 来存储 token 信息。...Retrofit 依赖引入在 Android 项目的 build.gradle 文件中添加 Retrofit 及其相关依赖:implementation 'com.squareup.retrofit2:...而 AuthResponse 是服务器返回的响应对象,包含生成的 JWT。4. Android 前端开发接下来,我们将在 Android 中实现登录页面,并与 Spring Boot 后端进行交互。...4.1 使用 Retrofit 进行网络请求Retrofit 是 Android 平台上广泛使用的网络请求库。首先,我们定义一个接口用于请求登录 API。...登录功能虽然看似简单,但其背后涉及的安全性和可扩展性都是我们需要重点关注的。
:1.5.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation "com.squareup.retrofit2...工具类: package com.aruba.flowapplyapplication.net import okhttp3.OkHttpClient import retrofit2.Retrofit...RetrofitClient { private val instance: Retrofit by lazy { Retrofit.Builder()..., Movie>() { companion object { const val pageSize = 10 } //该办法只在初始加载成功且加载页面的列表不为空的情况下被调用...{ return null } override suspend fun load(params: LoadParams): LoadResult<Int,
领取专属 10元无门槛券
手把手带您无忧上云