retrofit2為動態url帶來的新的註解,在retrofit 1中迷惑的點現在只需要乙個url
註解就能描述結點(endpoint)。
這篇文章將會展示如何利用動態結點url處理單獨的請求。
retrofit 2 — how to use dynamic urls for requests
使用案例情況
這裡有兩個案例來說明真實的應用場景。
怎麼使用動態urls
實際上,它只需要你加入乙個單獨的註解@url
在你的定義的結點,一圖勝千言
public
inte***ce
userservice
可以看到,在get
上不需要結點url,我們可以直接在方法中去新增這個url
urls是怎麼針對base url解析的
有另外乙個有趣而且需要注意的地方:動態url是怎麼在已經定義base url的情況下被解析的,retrofit 2使用okhttp的 httpurl 而且解析任何url結點成類似乙個**的鏈結。
讓我們根據一些場景來明白這個過程,首先我們有乙個url指向amazon s3(注:乙個雲服務平台,類似七牛)中儲存的乙個位址,而且我們也已經定義了乙個base url,這兩個的位址是完全不一樣的,
retrofit retrofit = retrofit.builder()
.baseurl("");
.build();
userservice service = retrofit.create(userservice.class);
service.profilepicture("");
// request url results in:
//
因為你設定了乙個完全不同的包含scheme的host ( vs. ,okhttp的httpurl會解析它成我們設定的url,這個和我們所定義的base url並沒有關係。
第二個例子:這次我們指定動態url在我們已經定義的base url同乙個服務下面,比如下面的**
retrofit retrofit = retrofit.builder()
.baseurl("");
.build();
userservice service = retrofit.create(userservice.class);
service.profilepicture("profile-picture/path");
// request url results in:
// profile-picture/path
retrofit retrofit = retrofit.builder()
.baseurl("v2/");
.build();
userservice service = retrofit.create(userservice.class);
service.profilepicture("/profile-picture/path");
// request url results in:
// profile-picture/path
第二和第三個例子的不同點就是:我們新增了乙個v2/
到base url後面並且在結點url的前面新增了乙個/
。實際上這將會最終生成同樣的url,因為結點url的前面是乙個/
符號,這個將會只新增到base url的host上面。當我們在結點url上新增乙個前置/
符號時,每個加到host url後面的東西都會被省略掉。刪除前置/
有時候可以解決你的一些不明白的問題。
分析提示
正確的「建立」請求url是你需要注意的問題。這些文章中的例子展示了一些容易犯的錯誤,一不小心就可能陷入這個陷阱中,確保你在請求時使用了乙個完全的url(包括scheme,host,path),否則你不得不去考慮上面的這些場景。
retrofit譯稿
Retrofit2 如何在請求時使用動態URL
retrofit2為動態url帶來的新的註解,在retrofit 1中迷惑的點現在只需要乙個url註解就能描述結點 endpoint 這篇文章將會展示如何利用動態結點url處理單獨的請求。retrofit 2 how to use dynamic urls for requests 使用案例情況 這...
Retrofit2對https請求的實現(乾貨)
由於專案上傳到googleplay時被提醒傳輸資料方式不安全,故改用https加密傳輸。這裡我的專案裡用到retrofit2.2.0,但retrofit本身的okhttp不能直接請求證書不安全的https,所以得採取一些應急措施。首先我們在androidstudio裡的gradle依賴retrofi...
使用Retrofit2進行HTTP請求設定請求超時
採用retrofit2本身可以進行優雅的restful請求,但是無法設定請求超時時間,需要配合okhttp3來設定請求超時.新增依賴 compile com.squareup.okhttp3 logging interceptor 3.0.1 新增配置資訊並設定超時時間 connecttimeout...