首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从零开始实现一个 mini-Retrofit 框架

    其中xianduGank 需要传入 count 及 page参数分别表示每页数据的数据以及请求的页码,除此之外这两个网络请求都需要传入 一个Class对象表示响应的Json数据对应的Model,以便在内部使用...{ //注解中 方法名写成value 这样的话,在使用注解传入参数时就不用带key了,它会作为一个默认的调用 String value(); } 新建一个处理Http接口类的动态代理的类...@GET注解则获取注解内的值作为请求的地址 if (annotations[i] instanceof GET) { //如果注解是GET类型 final GET annotation = (...GET) annotations[i]; final String url = annotation.value(); 3.根据url构造GET请求的Request对象,并作为参数调用OkHttpClient...JavaBean对象作为方法的返回值,但是这个设想存在这样几个问题 要实现直接返回Http结果则方法调用是同步调用,如果在主线程做IO请求肯定是不合理的 如果内部IO异常了,或者JSON转换失败了方法返回的是什么呢

    2K10

    网站提示用微信扫码登录,他们是怎么实现的?

    作为一个技术码农,在使用社区、论坛或者各类AI服务的时,经常会看到这样一个提示:“使用微信公众号扫码登录”。...我们可以先通过UML流程图,了解下整个调用关系。 首先,由用户发起登录操作。让WEB页面从服务端获取登录凭证。 之后,前端页面拿到登录凭证后,可以使用 Ticket 从公众号服务平台换取二维码。...二维码获取 从微信官网文档阅读可以知道,为了获取扫码登录的二维码,则需要3步; 先获取 AccessToken,它是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。...* @param appSecret 第三方用户唯一凭证密钥,即appsecret * @return 响应结果 */ @GET("cgi-bin/token")...retrofit2 对接接口,它可以以一种面向对象的思维,使用 HTTP 接口,免去自己处理中间的对接过程。

    3.4K10

    Retrofit--合理封装回调能让你的项目高逼格

    绪论 前面我们讨论了使用Retrofit时怎样去设置OKHttp,包括持久化管理Cookie、设置网络超时、设置打印拦截器、设置缓存、Header等等,详细可查看 Retrofit–使用Retrofit...Retrofit和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作。同时还封装了网络代码的调用。...现在网上的教程一般都告诉我们了怎样去使用Retrofit(随意找了一个教程): 1.首先定义一个接口: public interface APIService { @GET("/users/{user...自定义响应体CallModel 很简单的实现了一个网络请求,当然我在刚开始的时候一直也都是这么使用的,因为Retrofit自己封装了JSON解析的过程,我们只需在建造Retrofit的时候加入addConverterFactory...最后分享几个不错的Retrofit博客吧: 你真的会用Retrofit2吗?Retrofit2完全教程 深入浅出 Retrofit,这么牛逼的框架你们还不来看看?

    1.6K10

    Retrofit2与服务端实例讲解

    这样就造成了在学习 Retrofit2 的过程中,对某些参数的作用并不能直观感受到,所以这里我就尝试着用 Nodejs 搭建了一个本地服务器,提供了几个接口用于支持 Get、Post 模式访问调用,支持文件上传和文件下载功能...,返回的数据格式有 Json 对象和 Json 数组,需要的参数格式可以由使用者来自由定义 本篇文章不会对 Retrofit2 的用法进行过多介绍,重点在于介绍服务端接口的搭建以及 Retrofit2...请求 //Get请求时带上参数和请求头信息,参数将作为链接的后缀,生成的链接是:/Get/getString?...请求时带上参数和非固定值的请求头,参数将作为链接的后缀,生成的链接是:/Get/getString?.../getString/22 2.6、获取Json数组 之前的几种请求方式获取到的都是 Json 对象,此处来写一个返回的数据格式是 Josn 数组的接口,每个 Json 对象对应的是如下的 Java Bean

    2K30

    不可错过的几款GitHub开源项目

    本项目包含以下知识点: MVP架构思想 Retrofit RESTful API 框架的配合 RxJava 响应式编程 Butter Knife:通过注解绑定 View 夜间模式切换 效果图: ?...开发此项目主要是为展示各种开源库的使用方式以及 Android 项目的设计方案,并作为团队项目开发规范的一部分。...探索函数式编程 使用 Retrofit2 进行网络请求 开机自启动 Android 6.0 自定义文本操作栏 效果图: ?...技术点: 使用RxJava配合Retrofit2做网络请求 使用RxUtil对线程操作和网络请求结果处理做了封装 使用RxPresenter对订阅的生命周期做管理 使用RxBus来方便组件间的通信 使用...对应于model、ui、presenter三个包 使用Dagger2将M层注入P层,将P层注入V层,无需new,直接调用对象 使用Realm做阅读记录和收藏记录的增、删、查、改 使用Glide做图片的处理和加载

    1.9K20

    Android网络编程(九)Retrofit2前篇

    前言 Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,而OkHttp现在已经得到Google官方认可,不了解OKHttp的请查看本系列的前作...请求接口(GET): /service/getIpInfo.PHP?ip=[ip地址字串] 2. 响应信息: (json格式的)国家 、省(自治区或直辖市)、市(县)、运营商 3....Retrofit提供的请求方式注解有@GET和@POST等,分别代表GET请求和POST请求,我们在这里访问的界面是“getIpInfo.php”。...用retrofit创建我们之前定义的IpService接口对象,并调用该接口定义的getIpMsg方法得到Call对象。 用Call请求网络并处理回调 ?...如果想同步请求网络请使用 call.execute(),如果想中断网络请求则可以使用 call.cancel()。 完整的代码如下: ?

    1.2K60

    Android单元测试框架Robolectric3.0(二):数据篇

    其实,当我们在写单元测试时,为了测试某个功能或某个api,首先得调用相关的代码,因此我们留下来的便是一段如何调用的代码。...3 网络请求篇 关于网络请求,笔者采用的是retrofit2的2.0.0-beta4版本,api调用有很大的变化,请参考官方文档(http://square.github.io/retrofit/)。...这类测试的意义在于: (1)检验网络接口的稳定性 (2)检验部分响应结果数据的完整性(如非空验证) (3)方便开发阶段的联调(通过UT联调的效率远高于run app后联调) 2....这样做的话要改变一些编码习惯,比如回调函数不能写成匿名内部类对象,需要定义一个全局变量,并破坏其封装性,即提供一个get方法,供UT调用。...作为开发者,应该时刻思考什么才是有价值的UT,什么逻辑没必要写(比如set和get),这样才不会疲于奔命且觉得乏味。

    1.3K20

    Android使用Flow检测版本升级自动下载安装

    # 整体介绍 1 网络通讯用的retrofit2 2 类的JSON用的GSON 3 下载时的状态显示更新用的kotlin Flow,这也是我第一次用Flow排坑也用了些时间,不过使用起来确实感觉简单好多...throw it }.conflate() //conflate() 对应 LATEST 策略,如果缓存池满了,新数据会覆盖老数据 } //使用协程时需要加关键字...it.ChkUpgrade(); val rsp = callupgrade.execute() //判断返回体是否为null,如果是空返回参数...MainActivity中调用检测升级方法 fun CheckUpGrade(url:String){ GlobalScope.launch(Dispatchers.Main) {...map等属于中间运算符,可在应用于数据流时,设置一系列暂不执行的链式运算,留待将来使用值时执行。仅将一个中间运算符应用于数据流不会启动数据流收集。 collect等终端运算符可触发数据流开始监听值。

    1K30

    RxJava系列七(最佳实践)

    示例一、获取手机上已安装的App 第一个例子我们需要在Android设备上展示已安装的第三方app列表,关于环境搭建、依赖配置、RecyclerView的使用等这些基础内容我就不做陈述了。...首选我们需要调用系统api来获取所有已安装的app,所以在OnSubscribe的call方法中调用getApplicationInfoList()。...源码地址:https://github.com/BaronZ88/HelloRxAndroid 示例二、RxJava+Retrofit2实现获取天气数据 RxJava + Retrofit2几乎是Android...Retrofit2中一个标准的接口定义是这样的: @GET("weather") Observable getWeather(@Query("cityId") String cityId...同样的,我们需要定义一个获取cityId的接口: @GET("city") Observable getCityIdByName(@Query("cityName") String cityName

    1K130

    使用Retrofit打印请求日志,过滤改变服务器返回结果,直接获取String字符串直接获取字符串手动解析查看Retrofit请求网络日志自定义Interceptor实现过滤改变请求返回的数据(可使用

    但是自从升级了Retrofit2之后,就可以不用手动导入了,因为已经自己引入了。...Retrofit有一个优点,就是可以自动根据获取到的数据转换成相对应的Bean,它内部提供了一个转换机制,只需要你重写,就能写出自己的转换规则。...这两个,是在从请求Json数据到Bean需要使用到的。...: new Retrofit.Builder() //01:获取Retrofit对象 .baseUrl(Globals.SERVER_ADDRESS) //02采用链式结构绑定Base url .....connectTimeout(30, TimeUnit.SECONDS)//网络请求超时时间单位为秒 .build(); .addInterceptor()可以调用多次

    4.4K20

    从架构角度看Retrofit的作用、原理和启示

    访问网络数据用上一步获取的worker对象,执行网络请求 ? 在回调函数里,取得我们需要的BizEntity数据对象。网络访问结束。...在Retrofit生成Call网络工作对象时,她通过动态代理获取到了接口函数的Method定义,从这个Method中可以获取函数定义的返回对象类型,由于这个转换是需要CallAdapterFactory...如果可以匹配,那么前面调用serviceMethod.toResponse(ResponseBody body)函数时,会调用 ?...在调用这段代码时,其实就是调用了Gson中最终执行数据转换的代码: ?...Retrofit2完全教程Retrofit2 源码解析Retrofit 框架源码学习拆轮子系列:拆 RetrofitAndroid 动态代理以及利用动态代理实现 ServiceHook

    2.3K100

    【UVM COOKBOOK】Sequences||Sequencer与Driver-Sequence API

    在 get() 或 item_done() 调用之前调用peek的话,返回的都是同一个对象。...换句话说,当一个 sequence_item 的句柄作为参数传递给 finish_item() 方法时,driver的 get_next_item() 方法拿到的 sequence_item 所指向的对象是同一个...作为 start_item() 方法的结果,请求 sequence_item 具有由sequencer设置的这些字段,因此,新的响应 sequence_item 需要获取请求 ID 信息的副本,以便可以将其路由回原始...“和前面一段的意思是一样的” 使用指针克隆保证安全 当一个响应item从driver发送回一个sequence时,它的指针将存储在sequencer的响应 FIFO 中。...如果在发送下一个响应item指针之前没有使用响应item,除非新的响应item指针是针对新对象的,否则两个指针都将引用同一个对象。此问题的一个常见结果是连续读取 FIFO 会产生具有相同内容的对象。

    1.8K12

    Android网络编程(十)Retrofit2后篇

    前言 在上一篇Android网络编程(九)Retrofit2前篇[基本使用]中我们了解了Retrofit的最基本的GET方式访问网络的写法以及请求参数的简单介绍。...1.GET请求访问网络 动态配置URL地址:@Path Retrofit提供了很多的请求参数注解,使得请求网路时更加便捷。在这里我们仍旧访问淘宝ip库。其中,@Path用来动态的配置URL地址。...传输数据类型Json字符串:@Body 我们也可以用POST方式将Json字符串作为请求体发送到服务器,请求网络接口代码为: ?...用@Body这个注解标识参数对象即可,retrofit会将Ip对象转换为字符串。 ? 请求网络的代码基本上都是一致的: ? 运行程序用Fiddler抓包,如下图所示。 ?...使用@Header注解,可以通过调用getCarType方法来动态的添加消息报头。

    1.1K60
    领券