對Retrofit的認(rèn)識(shí)和學(xué)習(xí)
之前 都是用okhttp ?我覺得挺好用的 特別是弘揚(yáng)老師的封裝,用起來真的得心應(yīng)手,現(xiàn)在別人都在說Retrofit怎么好用!IT 都在不斷變化的技術(shù)!所以沒事 我也研究研究,不然萬一項(xiàng)目用的著那,所以把自己的簡介 都聊聊!肯定會(huì)在別人的博客里面拷貝東西!
1,創(chuàng)建業(yè)務(wù)請求接口
2,創(chuàng)建Retrofit示例 并完成相應(yīng)的配置
2,就是網(wǎng)絡(luò)請求
先說創(chuàng)建業(yè)務(wù)請求接口吧 ?自己根據(jù)自己項(xiàng)目中的創(chuàng)建
public interface LoginService{
@GET("user/login")
CallgetLogin(@Query("token")Stringtoken,@Field("Account")StringAccount,@Field("Password")StringPassword);
}
@Get 就是get請求 ?里面參數(shù) @Query 就是拼接在url后面的鍵值對 ?@Query("token) 就是key ?token 就是值 ?@Get("user/login") 就是拼接在baseUrl 后面的 變動(dòng)參數(shù)?
OkHttpClient client= newOkHttpClient.Builder()
.addInterceptor(new ?CommonInterceptor())
.build();
第一段代碼是創(chuàng)建一個(gè)okHttpClient? 這個(gè)可用可不用? 如果請求url 里面有固定的參數(shù)? 可以添加這個(gè) okhttpClient? 如果入固定參數(shù)也可以不用 創(chuàng)建一個(gè) CommonInterceptor ?
public class CommonInterceptor implements Interceptor{
@Override
public Responseintercept(Interceptor.Chainchain)throwsIOException{
Requestrequest=chain.request();
HttpUrlhttpUrl=request.url().newBuilder()
.addQueryParameter("token","tokenValue")
.build();
request=request.newBuilder().url(httpUrl).build();
returnchain.proceed(request);
}
}
token 和tokenValue 是每個(gè)鏈接的固定值 就可以創(chuàng)建一個(gè) Interceptor,
Retrofit ?retrofit= newRetrofit.Builder().client(client)
.baseUrl("http://www.test.ap.com/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
baseUrl 是添加域名和端口的網(wǎng)址 俗稱 baseUrl? 里面的url必須以"/"結(jié)尾不然會(huì)報(bào)錯(cuò)哦,addConverterFactory 是添加一個(gè)解析請求參數(shù)的Json字符串 下面 就用retrofit ?執(zhí)行網(wǎng)絡(luò)請求
LoginService service=retrofit.create(LoginService.class);
創(chuàng)建一個(gè)網(wǎng)絡(luò)請求的接口
CallsearchBooks=service.postLogin(newSignBean(),"13098834723","123456");//給接口傳遞參數(shù)
searchBooks.enqueue(newCallback() {
@Override
public void onResponse(Callcall,Responseresponse) {
Log.d("Main",response.body().toString()+"");
}
@Override
public void onFailure(Callcall,Throwablet) {
Log.d("Main","看見就放棄");
}
});
然后是創(chuàng)建 網(wǎng)絡(luò)連接 ?