2022-12-10 遇到的一點(diǎn)小問(wèn)題
之前的網(wǎng)絡(luò)請(qǐng)求方法是從網(wǎng)上找到超升,先設(shè)置baseUrl当凡,然后設(shè)置路徑和請(qǐng)求參數(shù)。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(StringConverterFactory.create())
.client(new OkHttpClient.Builder())
.build();
AppInterface app = retrofit.create(AppInterface.class);
Call<String> call = app.getInfo("python/test/", map);
call.enqueue(callback);
public interface AppInterface {
@GET("{param}")
Call<String> getInfo(@Path("param") String param, @QueryMap Map<String, String> map);
@GET("php/test")
Call<String> getInfo(@QueryMap Map<String, String> map);
}
不過(guò)最近有個(gè)接口遇到錯(cuò)誤务荆,才知道使用@Path()
去設(shè)置路徑抛蚁,會(huì)自動(dòng)編碼试吁,比如“python/test/”會(huì)變成“python%2Ftest”儡率。提前把路徑寫(xiě)好疮跑,路徑太多又很麻煩膝昆。
網(wǎng)上找了下丸边,看到是時(shí)候客觀評(píng)價(jià)Retrofit了,這幾點(diǎn)你必須明白荚孵,找到了答案妹窖,記錄一下。
public interface AppInterface {
@GET
Call<String> getInfo(@Url String url);
@GET
Call<String> getInfo(@Url String url, @QueryMap Map<String, String> map);
@POST
Call<String> postInfo(@Url String url, @Body RequestBody map);
}
不使用@Path()
收叶,使用@Url
骄呼。
試了下,有些參數(shù)少的判没。在提交時(shí)還可以 路徑+?+key=value 就可以蜓萄,不用特地寫(xiě)個(gè)map。
.
順便記錄一下澄峰,個(gè)別接口需要參數(shù)按順序提交的嫉沽,可以把HashMap
改成LinkedHashMap
。