首页
学习
活动
专区
圈层
工具
发布

Retrofit解析8之核心解析——ServiceMethod及注解2

补充一个问题: Path注解与Url注解不能同时使用,否则会抛出paramterError错误,其实原因有很好理解,Path注解用于替换url路径中参数,这就要求在使用path注解时,必须赢存在请求路径...,不然没法替换路径中指定的参数,而Url注解是在参数中指定的请求路径的,这个时候指定请求路径已经晚了,path注解找不到请求路径,更别提更换请求路径中的参数了。...; validateEagerly = retrofit.validateEagerly; } 1、无参数的构造函数其实内部调用的是入参是Platform的构造函数,Platform.get...请求方式有@link retrofit2.http.GET 代表GET请求,@link retrofit2.http.PUT 代表PUT请求,@retrofit2.http.POST,代表POST...如果你想动态设置url,第一个入参需要使用@Url 注解来实现。可以在方法参数里面使用@Path注解,是实现替换Url部分内容,被替换的部分需要用大括号“{}”括起来,例如"{foo}"。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    前言 本篇文章将采用循序渐进的编码方式,从零开始实现一个Retorift框架,在实现过程中不断提出问题并分析实现,最终开发出一个mini版的Retrofit框架 ?...类中我们目前定义了2个Http 请求 todayGank 和 xianduGank ,目前两个请求方式都是 Get 其中xianduGank 需要传入 count 及 page参数分别表示每页数据的数据以及请求的页码...public Call todayGank(); } 我们在一个抽象接口类中添加了一个方法,在方法上添加了注解@GET 表示这是一个Http GET请求的调用,注解中GET带的默认参数表示GET请求的地址...编码实现 ---- 3.1 简单实现一个支持GET、POST请求的Retrofit 新建一个注解类@GET package retrofit2.http; import java.lang.annotation.ElementType...{ //注解中 方法名写成value 这样的话,在使用注解传入参数时就不用带key了,它会作为一个默认的调用 String value(); } 新建一个处理Http接口类的动态代理的类

    2.3K10

    Retrofit解析2之使用简介

    、@Url (一)、方法注解: 1、@GET:用于发送一个get请求 @GET 注解一般必须添加相对路径或者绝对路径或者全路径,如果不想用在@GET 注解后添加请求路径,则可以在方法的第一个参数中用@Url...(四)其他注解: 1、@Path:用于方法的参数 在URL路径中替换指定参数值。使用String.valueOf()和URL编码将值转换为字符串。...其实原因也是很好理解:Path注解用于替换url中的参数,这就要求在使用path注解时,必须已经存在请求路径。不然没法替换路径中指定的参数。...而@Url 注解是在参数中指定了请求路径的,这时候情定请求路径已经晚,path注解找不到请求路径,更别提更换请求路径了中的参数了。...(一)、如何使用Retrofit和okHttp封装multipart/form-data 1、在retrofit2中: 使用** @retrofit2.http.Multipart : 标记一个请求是

    5.7K30

    Retrofit解析9之流程解析

    ;在okHttp中,Request需要自己进行定义创建,而Retrofit简化了这个操作,进行相应的封装,使用注解的方式来定义RequestBuilder相关参数信息;注解信息的解析则在parseMethodAnnotation...最简单的用法,可以从代码看出: 首先定义一个接口,接口中的方法用注解方式声明了HTTP请求的相关参数,包括GET方法,相关参数等。...补充说明: 由于是调用无参的Retrofit.Builder()的构造函数,而无参的构造函数内部又调用了 this(Platform.get());在 this(Platform.get())里面有调用了...invoke方法为接口方法的具体实现,invoke()方法里面的method为具体的方法(在demo中为contributors方法);args是该方法的参数(在demo中为new String[]{"...,会直接抛异常,比如你方法注解使用了@Multipart,但是在参数那里使用了注解Field,由于是互斥的,所以会抛异常。

    2.5K41

    我终于决定要放弃okhttp、httpClient,选择了这个牛逼的神仙工具!贼爽

    注解分类 支持的注解 请求方式 @GET @HEAD @POST @PUT @DELETE @OPTIONS 请求头 @Header @HeaderMap @Headers Query参数 @Query...扩展注解式拦截器 有的时候,我们需要在拦截注解动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解。...当然,我们也可以在配置文件中配置多个自定义的连接池,然后通过@RetrofitClient的poolName属性来指定使用。...错误解码器 在HTTP发生请求错误(包括发生异常或者响应数据不符合预期)的时候,错误解码器可将HTTP相关信息解码到自定义异常中。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。

    4.1K50

    扔掉okhttp、httpClient,来试试这款轻量级HTTP客户端神器?

    注解分类 支持的注解 请求方式 @GET @HEAD @POST @PUT @DELETE @OPTIONS 请求头 @Header @HeaderMap @Headers Query参数 @Query...扩展注解式拦截器 有的时候,我们需要在拦截注解动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解。...当然,我们也可以在配置文件中配置多个自定义的连接池,然后通过@RetrofitClient的poolName属性来指定使用。...复制代码 错误解码器 在HTTP发生请求错误(包括发生异常或者响应数据不符合预期)的时候,错误解码器可将HTTP相关信息解码到自定义异常中。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。

    2.2K30

    扔掉okhttp、httpClient,来试试这款轻量级HTTP客户端神器?

    熔断降级 微服务之间的HTTP调用 调用适配器 数据转换器 基于微服务的思想,构建在 B2C 电商场景下的项目实战。...注解分类 支持的注解 请求方式 @GET @HEAD @POST @PUT @DELETE @OPTIONS 请求头 @Header @HeaderMap @Headers Query参数 @Query...扩展注解式拦截器 有的时候,我们需要在拦截注解 动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解 。...当然,我们也可以在配置文件中配置多个自定义的连接池,然后通过@RetrofitClient的poolName属性来指定使用。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。

    2.8K30

    不好意思,HttpClient 该换了!

    注解分类 支持的注解 请求方式 @GET @HEAD @POST @PUT @DELETE @OPTIONS 请求头 @Header @HeaderMap @Headers Query参数 @Query...扩展注解式拦截器 有的时候,我们需要在拦截注解 动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解 。...当然,我们也可以在配置文件中配置多个自定义的连接池,然后通过@RetrofitClient的poolName属性来指定使用。...错误解码器 在HTTP发生请求错误(包括发生异常或者响应数据不符合预期)的时候,错误解码器可将HTTP相关信息解码到自定义异常中。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。

    41910

    扔掉okhttp、httpClient,来试试这款轻量级 HTTP 客户端框架,吹爆!

    HTTP请求相关注解 HTTP请求相关注解,全部使用了Retrofit原生注解,以下是一个简单说明: 注解分类 支持的注解 请求方式 @GET @HEAD @POST @PUT @DELETE @OPTIONS...- retrofit2.converter.jackson.JacksonConverterFactory # 全局调用适配器工厂(组件扩展的调用适配器工厂已经内置,这里请勿重复配置...自定义拦截注解 有的时候,我们需要在"拦截注解"动态传入一些参数,然后在拦截的时候使用这些参数。这时候,我们可以使用"自定义拦截注解",步骤如下: 自定义注解。...你可以在@RetrofitClient注解的errorDecoder()指定当前接口的错误解码器,自定义错误解码器需要实现ErrorDecoder接口: 微服务之间的HTTP调用 继承ServiceInstanceChooser...注意:@url必须放在方法参数的第一个位置,另外,@GET、@POST等注解上,不需要定义端点路径。

    1.3K10

    Android 2 新框架 rxjava ,retrifit

    : retrofit实例 method,接口方法 接口方法的注解methodAnnotations,在retrofit里一般为请求方式 参数类型parameterTypes 参数注解数组parameterAnnotationsArray...我们的示例中在最后一步就是调用了request方法和enqueue方法发起网络请求。至此我们已经疏通了retrofit是如何进行网络请求的了。...总结:当我们调用Retrofit的网络请求方式的时候,就会调用okhttp的网络请求方式,参数使用的是实现接口的方法的时候拿到的信息构建的RequestBuilder对象,然后在build方法中构建okhttp...的Request,最终发起网络请求 总结 Retrofit主要是在create方法中采用动态代理模式实现接口方法,这个过程构建了一个ServiceMethod对象,根据方法注解获取请求方式,参数类型和参数注解拼接请求的链接...如Retrofit的解耦方式: 1、通过注解来配置请求参数; 2、通过工厂来生成CallAdapter,Converter。

    67010

    深入浅出Retrofit2.x(二)

    上一篇文章深入浅出Retrofit2.x(一)中,我们讲解了 Retrofit 的最基本用法,以及 GET 请求示例,非常简单,相信大家都已经会使用了,本篇文章将继续介绍 Retrofit 的一些其他的一些常用用法...GET 请求之 @Query 和 @QueryMap 注解 @Query 其实相当于我们在请求时 Url 中 ‘?’...3.Retrofit 注解 我们都知道,在 Retrofit 中,大量使用了注解,这样做的好处是可以简化请求,通过各种不同的注解来进行灵活的配置,另外也可以达到解耦的目的,所以说 Retrofit 的设计很美很优雅..., Retrofit 的注解大体分为以下几类: 用于标注请求方式的注解; 用于标记请求头的注解; 用于标记请求参数的注解; 用于标记请求和响应格式的注解; 3.1 请求方法注解 注解 说明 @GET GET...Map,可用于实现多文件上传 @Path 用于 url 中的占位符 @Query 用于 GET 请求的 url 中指定 key=value 参数 @QueryMap 和 @Query 使用类似 @Url

    1.6K10

    你真的会用Retrofit2吗?Retrofit2完全教程

    测试服务器2"},"count":0,"page":0} 2、Retrofit注解详解 上面提到Retrofit 共22个注解,这节就专门介绍这22个注解,为帮助大家更好理解我将这22个注解分为三类,...以上表格中的除HTTP以外都对应了HTTP标准中的请求方法,而HTTP注解则可以代替以上方法中的任意一个注解,有3个属性:method、path,hasBody,下面是用HTTP注解实现上面 Example01...注1:{占位符}和PATH尽量只用在URL的path部分,url中的参数使用Query和QueryMap 代替,保证接口定义的简洁 注2:Query、Field和Part这三者都支持数组和实现了Iterable...> get(Type returnType, Annotation[] annotations, Retrofit retrofit); // 用于获取泛型的参数 如 Call在注解中提供的url是不完整的url,且不以 / 开头,则请求的url为baseUrl+注解中提供的值 如果你在注解中提供的url是不完整的url,且以 / 开头,则请求的url为baseUrl的主机部分

    2.9K70

    Android Retrofit 高级使用与原理

    简介 在 Android 开发中,网络请求是一个极为关键的部分。Retrofit 作为一个强大的网络请求库,能够简化开发流程,提供高效的网络请求能力。...Retrofit 的核心概念 注解 Retrofit 使用注解来描述 HTTP 请求的参数、URL 和请求方法。...以下是常见的注解: @GET:发送 GET 请求 @POST:发送 POST 请求 @Path:替换 URL 中的参数 @Query:添加查询参数 @Body:发送请求体 示例代码: public interface...在编译时,Retrofit 会生成一个代理类,该代理类实现了我们的接口,并在方法调用时构建相应的 HTTP 请求。...在代理类生成的代码中,会将构建好的 HTTP 请求交给 OkHttp 处理,并将响应数据交回给 Retrofit 进行解析和转换。

    1.3K30

    安卓上如何优雅地使用网络请求丨深入浅出Retrofit2.x(二)

    上一篇文章深入浅出Retrofit2.x(一)中,我们讲解了 Retrofit 的最基本用法,以及 GET 请求示例,非常简单,相信大家都已经会使用了,本篇文章将继续介绍 Retrofit 的一些其他的一些常用用法...1.POST 请求我最行 大家在和服务交互的时候,大多情况下都应该使用的是 GET、POST 请求吧,下面我们就对 POST 各种数据类型及如何定义接口进行说明。...GET 请求之 @Query 和 @QueryMap 注解 @Query 其实相当于我们在请求时 Url 中 ‘?’...3.Retrofit 注解 我们都知道,在 Retrofit 中,大量使用了注解,这样做的好处是可以简化请求,通过各种不同的注解来进行灵活的配置,另外也可以达到解耦的目的,所以说 Retrofit 的设计很美很优雅...@Path用于 url 中的占位符@Query用于 GET 请求的 url 中指定 key=value 参数@QueryMap和 @Query 使用类似@Url指定请求路径,可以是全路径和相对路径 3.4

    1.4K10
    领券