Retrofit

Retrofit混淆

-keepattributes Signature
-dontwarn retrofit2.Platform$Java8
# 接口类
-keep public class com.xx.api.ApiService {
  *;
}

注意
不保持接口类时会报“java.lang.IllegalArgumentException: Missing either [@GET](https://my.oschina.net/get) URL or [@Url](https://my.oschina.net/url) parameter.”

Retrofit如何处理base url和动态url的

分三种状况(base url为"https://api.weibo.com/2/"):java

1. 动态url包含完整的scheme和host,直接使用动态url做为最终的请求url。例如动态url为"http://apis.baidu.com/apistore/weatherservice/weather",那么最终的请求url也为"http://apis.baidu.com/apistore/weatherservice/weather"。

2. 动态url包含该host,则使用base url的scheme链接动态url做为最终的请求url。例如动态url为"//apis.baidu.com/apistore/weatherservice/weather",那么最终的请求url为"https://apis.baidu.com/apistore/weatherservice/weather"。

3. 动态url不包含scheme和host,则将baseurl与动态url链接起来做为最终的请求url,与在@GET后定义端点url一致。例如动态url为"/apistore/weatherservice/weather",那么最终的请求url为"https://api.weibo.com/apistore/weatherservice/weather"。

注意api

[@GET](https://my.oschina.net/get)
Observable<ResponseBody> executeGet(
        [@Url](https://my.oschina.net/url) String url,
        @HeaderMap Map<String, String> headers,
        @QueryMap Map<String, String> maps);

		

@GET("{url}")
Observable<ResponseBody> executeGet(
        @Path("url") String url,
        @HeaderMap Map<String, String> headers,
        @QueryMap Map<String, String> maps);
	
以上写法,url会被转义(“/”别转义为“%2F”),致使上面规则失效,老是添加baseurl


@GET("{url}")
Observable<ResponseBody> executeGet(
        @Path(value ="url", encoded = true) String url,
        @HeaderMap Map<String, String> headers,
        @QueryMap Map<String, String> maps);
		
以上写法,避免被转移,正常

参考url

Retrofit之请求Url	
http://www.jianshu.com/p/be4007f8eac7

是时候客观评价Retrofit了,Retrofit这几点你必须明白!	
http://blog.csdn.net/sk719887916/article/details/53613263
相关文章
相关标签/搜索