在使用Retrofit的时候,我写的baseurl没有以’/'结尾,类似这样:
String baseurl = "http://192.168.0.1:8080"
在api上写了一个接口:
@Headers({"Content-Type: application/json", "Accept:application/json"})
@POST("/a/Login")
Observable<ResponseBody> Login(@HeaderMap Map<String, Object>headers, @Body RequestBody body);
通过拦截器发现,获取到完整的url是正常的:
http://192.168.0.1:8080/a/Login
但是当我改变了baseurl:
String baseurl = "http://192.168.0.1:8080/user"
发现Retrofit抛出了IllegalArgumentException异常
让我的baseurl以’/‘结尾,加了’/'之后获取到的url是这样的:
http://192.168.0.1:8080/a/Login
user这个字段不见了,于是我将baseurl加上’/’,将api上的’/'去掉:
String baseurl = "http://192.168.0.1:8080/user/"
@Headers({"Content-Type: application/json", "Accept:application/json"})
@POST("a/Login")
Observable<ResponseBody> Login(@HeaderMap Map<String, Object>headers, @Body RequestBody body);
打印日志发现获取到的是完整的url,即:
http://192.168.0.1:8080/user/a/Login
于是查找了一下文档发现是Retrofi在解析baseaurl的时候做了处理
以后在baseurl上尽量在结尾处加上’/’