retrofit 请求,BaseURL部分缺失,踩坑

retrofit 请求,BaseURL部分缺失,踩坑

昨天在使用retrofit2+OKhttp3进行网络请求时,碰到了一个坑爹问题。

部分接口请求时,baseURL中的部分字段缺失。
话不多说,直接上图。
先看baseURL
这里写图片描述
设置拦截器,在拦截其中查看请求的URL
这里写图片描述
请求两个URL,一个正常的,一个会缺失的。
这个是正常的。
这里写图片描述
这个是有问题的。
这里写图片描述
可以明显的看到,有问题的接口URL中,缺少了“/api/v1/”这段。
下面我们来看下这个两个接口定义时的样子。
这里写图片描述
这里写图片描述

问题原因:仔细观察!!!仔细观察!!!,文字就在于,注解的时候()里面的URL有没有‘/’这个斜杠符号开头。正常情况下,前面是不需要用‘/’开头的,因为再baseURL中已经以‘/’结尾了。所以就造成了URL部分缺失的问题。

这里再说一下使用retrofit拼接URL时的几个规则。

这里写图片描述
参考链接:http://bbs.csdn.net/topics/392056571?list=lz

最后解决:把注解部分以‘/’开头的‘/’符号去掉。bingo

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Retrofit是一个用于构建网络请求的开源库,通常用于Android开发。在某些情况下,我们需要访问不止一个基本URL来获取数据或访问不同的API。 对于这种情况,Retrofit提供了多种解决方案来支持多个base URL。以下是其中一种实现方式: 首先,我们需要为每个base URL创建一个单独的Retrofit实例。然后可以为每个实例分别设置自定义的OkHttpClient和Converter工厂。 在创建Retrofit实例时,我们可以通过`Retrofit.Builder()`来设置各种属性,例如OkHttpClient、Converter工厂等。我们可以为每个base URL创建一个Retrofit实例,并为每个实例设置不同的配置。 接下来,我们需要为每个base URL创建一个对应的API接口。可以通过在不同的Retrofit实例上调用`create()`方法来创建这些API接口。每个base URL都对应着其相应的Retrofit实例,这样每个实例都会将请求发送到正确的base URL。 最后,我们就可以使用相应的API接口来发送请求和获取数据了。根据需要选择不同的API接口即可,每个接口对应着不同的base URL。 这样,通过创建多个Retrofit实例并为每个实例设置不同的base URL,我们就可以在一个应用中访问多个不同的API。 总结起来,retrofitbaseurl的实现方式是通过为每个base URL创建一个独立的Retrofit实例,并为每个实例设置不同的配置,然后使用相应的API接口来发送请求和获取数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值