-
Get方法
//創(chuàng)建okHttpClient對(duì)象
OkHttpClient mOkHttpClient = new OkHttpClient();
//創(chuàng)建一個(gè)Request
final Request request = new Request.Builder()
.url("https://github.com/hongyangAndroid")
.build();
//new call
Call call = mOkHttpClient.newCall(request);
//請(qǐng)求加入調(diào)度
call.enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
}@Override public void onResponse(final Response response) throws IOException { //String htmlStr = response.body().string(); }
});
- Post方法
Request request = buildMultipartFormRequest(
url, new File[]{file}, new String[]{fileKey}, null);
FormEncodingBuilder builder = new FormEncodingBuilder();
builder.add("username","張鴻洋");
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
mOkHttpClient.newCall(request).enqueue(new Callback(){});

-
獲取響應(yīng) RealCall
getResponseWithInterceptorChain
image.png
private Response getResponseWithInterceptorChain() throws IOException {
// Build a full stack of interceptors.
List<Interceptor> interceptors = new ArrayList<>();
//添加應(yīng)用攔截器
interceptors.addAll(client.interceptors());
//添加重試和重定向攔截器
interceptors.add(retryAndFollowUpInterceptor);
//添加轉(zhuǎn)換攔截器
interceptors.add(new BridgeInterceptor(client.cookieJar()));
//添加緩存攔截器
interceptors.add(new CacheInterceptor(client.internalCache()));
//添加連接攔截器
interceptors.add(new ConnectInterceptor(client));
//添加網(wǎng)絡(luò)攔截器
if (!retryAndFollowUpInterceptor.isForWebSocket()) {
interceptors.addAll(client.networkInterceptors());
}
//添加網(wǎng)絡(luò)攔截器
interceptors.add(new CallServerInterceptor(
retryAndFollowUpInterceptor.isForWebSocket()));
//生成攔截器鏈
Interceptor.Chain chain = new RealInterceptorChain(
interceptors, null, null, null, 0, originalRequest);
return chain.proceed(originalRequest);
}

//手動(dòng)創(chuàng)建一個(gè)OkHttpClient并設(shè)置超時(shí)時(shí)間
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
retrofit = new Retrofit.Builder()
.client(getOkHttpClient())
.addConverterFactory(JsonConverterFactory.create(new Gson()))
// .addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(BASE_URL)
.build();
apiService = retrofit.create(APIService.class);
2) 創(chuàng)建Retrofit對(duì)象
Retrofit retrofit = new Retrofit.Builder()
//使用自定義的mGsonConverterFactory
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://apis.baidu.com/txapi/")
.build();
mApi = retrofit.create(APi.class);
3)發(fā)起網(wǎng)絡(luò)請(qǐng)求
mApi = retrofit.create(APi.class);
Call<News> news = mApi.getNews("1", "10");
news.enqueue(new Callback<News>() {
@Override
public void onResponse(Call<News> call, Response<News> response) {
}
@Override
public void onFailure(Call<News> call, Throwable t) {
}
});
public interface APi {
@Headers("apikey:81bf9da930c7f9825a3c3383f1d8d766")
@GET("word/word")
Call<News> getNews(@Query("num") String num,@Query("page")String page);
}
