Retrofit2 baseUrl带?号

                                  Retrofit2 baseurl带?号及路径设置问题

1、.baseurl()  基础地址带"?"号(例如访问路径为: http://www.baidu.com/?/params) 

      当使用@Post({path}) 

                  Observable<Bean> getBean(@Path("path") String path,@Field("str") String filed)时,

                 请求的地址会变为 http://www.baidu.com/(你传入的path值) (例如: getBean("test","filed"),则请求地址为 http://www.baidu.com/test)

     同上,如果baseurl()为  http://www.baidu.com/   在getBean()时传入"?/params/test"  则实际请求地址扔为 http://www.baidu.com/test  原因是@Path("path") 接收的值只能为1      级目录即"test"不能带有"/";

     有过拼接Get请求经验的同学应该知道,?后面将拼接参数,例如:http://www.baidu.com/?username=xxx&pswd=xxx  

     所以后台接口地址(基础地址)尽量不要乱带"?"号,很恶心的。

     当然带了问号并不是没有解决办法:

      @Post

       Observable<Bean> getBean(@Url String url,@Field("str") String filed)

       将baseurl设置为: http://www.baidu.com/   将url写为“?/params/test“”即可

       建议:  新建路由类,在路由类中定义

public class Router{

    public static String BaseUrl ="http://www.baidu.com/" 

                    public static String Prefix ="?/params/"

    public static String  rout1= Prefix+"rout1";

    public static String  rout2 = Prefix+"rout2";

.

.

.

}

  使用时 .baseurl(Router.BaseUrl)    调用接口时 .getBean(Router.rout1,"field");

2.关于Url拼接问题的解答

     @Post为接口处 + baseUrl为自定义                                             ->  实际请求路径   

      @Post("/list") +baseUrl("http://www.baidu.com/base/road")   ->   http://www.baidu.com/list

       @Post("list") +baseUrl("http://www.baidu.com/base/road")   ->   http://www.baidu.com/base/list         

       @Post("list") +baseUrl("http://www.baidu.com/base/road/")   ->   http://www.baidu.com/base/road/list  (期望地址)

3、关于打印日志,将请求的路径、返回的参数等打印出来 请参照《Retrofit2 日志的打印 》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值