當前位置:編程學習大全網 - 源碼下載 - 如何使用java okhttp3

如何使用java okhttp3

代碼如下:

進口?Java . io . io exception;

進口?Java . net . socket time out exception;

進口?Java . util . ArrayList;

進口?Java . util . hashmap;

進口?Java . util . list;

進口?Java . util . map;

進口?okhttp3。曲奇;

進口?okhttp3。CookieJar

進口?okhttp3。形體;

進口?okhttp3。標題;

進口?okhttp3。HttpUrl

進口?okhttp3。媒體類型;

進口?okhttp3。OkHttpClient

進口?okhttp3。請求;

進口?okhttp3。請求體;

進口?okhttp3。回應;

進口?okhttp3。OkHttpClient . Builder

公共?班級?HttpLib?{

公共?靜電?布爾?調試?=?假的;

私人?決賽?靜電?字符串?UserAgent?=?“Mozilla/5.0?(Windows?NT?10.0;?Win64?x64)?AppleWebKit/537.36?(KHTML,?比如?壁虎)?Chrome/63.0.3239.108?safari/537.36”;

私人?地圖& lt字符串,?列表& ltCookie & gt& gt?cookieContainer?=?新的?HashMap & lt字符串,?列表& ltCookie & gt& gt();

私人?布爾?enableCookie?=?假的;

公共?布爾?isEnableCookie()?{

回歸?enableCookie

}

公共?作廢?setEnableCookie(布爾型?enableCookie)?{

this.enableCookie?=?enableCookie

}

公共?字符串?get(字符串?網址)?摔投?SocketTimeoutException?{

回歸?獲取(網址,null);

}

公共?字符串?get(字符串?網址,?字符串?字符集)?摔投?SocketTimeoutException?{

OkHttpClient?客戶?=?buildOkHttpClient();

請求?請求?=?createRequestBuilder(url)。build();

?試試?{

?回應?回應?=?client.newCall(請求)。執行();

?如果?(response . issuccessuccess())?{

?如果?(調試)?{

?dumpHeaders(響應);

?}

?如果?(charset?!=?null?& amp& amp?!charset.equals(" ")?{

?回歸?新的?String(response.body()。bytes(),?charset);

?}

?回歸?response.body()。string();

?}

?}?接住?(SocketTimeoutException?e)?{

?扔?e;

?}?接住?(IOException?e)?{

?e . printstacktrace();

?}

?回歸?null

}

公共?字符串?tryGet(字符串?網址,?int?tryTimes)?{

字符串?html?=?null

布爾?完成了嗎?=?假的;

int?數數?=?0;

什麽時候?(!完成了嗎?& amp& amp?數數?& lt?tryTimes)?{

試試?{

html?=?get(網址);

完成了嗎?=?真實;

}?接住?(SocketTimeoutException?e)?{

System.out.println("獲取鏈接["?+?網址?+?"]內容超時,試圖獲得第壹個"?+?(++計數)?+?"二次收購...");

}

}

回歸?html

}

公共?字符串?post(字符串?網址,?地圖& lt字符串,?字符串& gt?postData,?字符串?字符集)?{

形體。建築商?formBodyBuilder?=?新的?形體。builder();

為了什麽?(圖。Entry & lt字符串,?字符串& gt?入門?:?postData.entrySet())?{

form body builder . add(entry . getkey(),?entry . getvalue());

}

RequestBody?requestBody?=?form body builder . build();

回歸?帖子(網址,?requestBody,charset);

}

公共?字符串?post(字符串?網址,?MediaType?內容類型,?字符串?內容,?字符串?字符集)?{

回歸?帖子(網址,?FormBody.create(contentType,內容),?charset);

}

公共?字符串?post(字符串?網址,?RequestBody?requestBody,字符串?字符集)?{

OkHttpClient?客戶?=?buildOkHttpClient();

請求。建築商?請求生成器?=?createRequestBuilder(URL);

請求?請求?=?request builder . post(request body)。build();

試試?{

回應?回應?=?client.newCall(請求)。執行();

如果?(response . issuccessuccess())?{

如果?(charset?!=?null?& amp& amp?!charset.equals(" ")?{

回歸?新的?String(response.body()。bytes(),?charset);

}

回歸?response.body()。string();

}

}?接住?(IOException?e)?{

e . printstacktrace();

}

回歸?null

}

私人?OkHttpClient?buildOkHttpClient()?{

建築商?建築商?=?新的?OkHttpClient。builder();

如果?(enableCookie)?{

builder.cookieJar(新?CookieJar()?{

@覆蓋

公共?列表& ltCookie & gt?loadForRequest(HttpUrl?網址)?{

列表& ltCookie & gt?餅幹?=?cookiecontainer . get(URL . host());

回歸?餅幹?!=?null?餅幹?:?新的?ArrayList & ltCookie & gt();

}

@覆蓋

公共?作廢?saveFromResponse(HttpUrl?網址,?列表& ltCookie & gt?餅幹)?{

如果?(調試)?{

dumpCookies(餅幹);

}

cookieContainer.put(url.host(),?餅幹);

}

});

}

回歸?builder . build();

}

私人?請求。建築商?createRequestBuilder(字符串?網址)?{

請求。建築商?建築商?=?新的?請求。構建器()。url(網址);

builder.addHeader("用戶代理",?user agent);

回歸?建設者;

}

私人?作廢?dumpHeaders(響應?回應)?{

?system . out . println("-Headers-");

?標題?標題?=?response . headers();

?為了什麽?(字符串?名字?:?headers.names())?{

?System.out.println(名稱);

?}

?system . out . println("-");

}

私人?作廢?dump cookies(List & lt;Cookie & gt?餅幹)?{

system . out . println("-cookies-");

為了什麽?(曲奇?曲奇?:?餅幹)?{

system . out . println(cookie);

}

system . out . println("-");

}

}

  • 上一篇:學認識cpu.主板,硬盤,內存,顯卡等參數
  • 下一篇:linux 內核 鏡像 工具 哪些 yocto
  • copyright 2024編程學習大全網