Okhttp

  1. 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();
         }
    

});

  1. 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(){});

image.png
  1. 獲取響應(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);
}

image.png
//手動(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);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章主要講 Android 網(wǎng)絡(luò)請(qǐng)求時(shí)所使用到的各個(gè)請(qǐng)求庫(kù)的關(guān)系,以及 OkHttp3 的介紹。(如理解有誤,...
    小莊bb閱讀 1,322評(píng)論 0 4
  • 前言:對(duì)于OkHttp我接觸的時(shí)間其實(shí)不太長(zhǎng),一直都是使用Retrofit + OkHttp 來(lái)做網(wǎng)絡(luò)請(qǐng)求的,但是...
    mecury閱讀 41,465評(píng)論 23 178
  • OkHttp源碼的samples的簡(jiǎn)單使用的示例: public static void main(String....
    _warren閱讀 876評(píng)論 0 1
  • OkHttp源碼分析-同步篇 很早就想拿okhttp開刀了,這次就記一次使用OKhttp的網(wǎng)絡(luò)請(qǐng)求。首先需要說(shuō)明的...
    埃賽爾閱讀 1,055評(píng)論 1 2
  • 這種關(guān)鍵時(shí)刻還是專業(yè)人士流弊啊···
    huo123閱讀 298評(píng)論 0 2

友情鏈接更多精彩內(nèi)容