淺談Okhttp去除請求頭user-agent
Http Header之User-Agent
User-Agent中文名為用戶代理,是Http協(xié)議中的一部分,屬于頭域的組成部分,User Agent頁簡稱UA。她是一個(gè)特殊字符串頭,是一種想訪問網(wǎng)站提供你說使用的瀏覽器類型和版本,操作系統(tǒng)和版本,瀏覽器內(nèi)核等信息的標(biāo)識,用戶所訪問的網(wǎng)站可以顯示不同的排版,而為用戶提供更好的體驗(yàn)或者進(jìn)行信息統(tǒng)計(jì)
現(xiàn)象說明
用OKhttp框架請求http請求的時(shí)候會(huì)把user-agent帶上;然而有些時(shí)候我們需要把請求頭里面的user-agent去掉;
客戶端程序:
private static final String BASE_URL = "http://192.168.253.200:8080/Chapter/";
public static void testHeaders() {
HttpClient httpClient = new HttpClient.Builder(BASE_URL).isDebug(false)
.add("header", "12345")
.header("master", "china")
.connectTimeout(5000)
.readTimeout(5000)
.build();
httpClient.Api().send(new HttpClient.Builder().url("postParam")
.add("header", "123459")
.add("master", "usa")
.add("token", "388298a0c89f4a38b2fed4cd4123d441")
.method(Method.POST)
.build(), new ResultSubscriber<>(new ResultListener<Object>() {
@Override
public void onResponse(Object t) {
System.out.println(t);
}
}));
}
返回結(jié)果:
{
"headers":{
"content-length":"76",
"host":"192.168.253.200:8080",
"client":"Android Client",
"content-type":"application/x-www-form-urlencoded",
"connection":"Keep-Alive",
"accept-encoding":"gzip",
"master":"china",
"user-agent":"okhttp/3.4.1"
},
"header":"123459",
"master":"usa",
"token":"388298a0c89f4a38b2fed4cd4123d441"
}
你會(huì)發(fā)現(xiàn): "user-agent":"okhttp/3.4.1" 這是由于okhttp內(nèi)置攔截器BridgeInterceptor默認(rèn)添加的。我們需要借助網(wǎng)絡(luò)攔截器來重新攔截請求頭;
解決方法:
利用攔截器來實(shí)現(xiàn)對user-agent刪除
public class LogInterceptor implements Interceptor {
private HttpClient builder;
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
request =request.newBuilder().removeHeader("User-Agent").build();
Response response = chain.proceed(request);
okhttp3.MediaType mediaType = response.body().contentType();
String content = response.body().string();
return response.newBuilder()
.body(okhttp3.ResponseBody.create(mediaType, content))
.build();
然后利用網(wǎng)絡(luò)攔截器來設(shè)置自定義的攔截器LogInterceptor :
Builder okBuilder = new OkHttpClient.Builder()
.connectTimeout(mbuilder.getConnectTimeout(), TimeUnit.SECONDS)
.readTimeout(mbuilder.getReadTimeout(), TimeUnit.SECONDS)
.writeTimeout(mbuilder.getWriteTimeout(), TimeUnit.SECONDS)
.sslSocketFactory(OkhttpUtils.createSSLSocketFactory(), new OkhttpUtils. TrustAllCerts())// 信任所有證書
.hostnameVerifier(new OkhttpUtils.TrustAllHostnameVerifier());
LogInterceptor logInterceptor = new LogInterceptor();
logInterceptor.setBuilder(mbuilder);
//okBuilder.addInterceptor(logInterceptor);//應(yīng)用攔截器
okBuilder.addNetworkInterceptor(logInterceptor);//網(wǎng)絡(luò)攔截器
最后重新發(fā)送網(wǎng)絡(luò)請求:
{
"headers":{
"content-length":"63",
"host":"192.168.253.200:8080",
"client":"Android Client",
"content-type":"application/x-www-form-urlencoded",
"connection":"Keep-Alive",
"accept-encoding":"gzip",
"master":"china"
},
"header":"123459",
"master":"usa",
"token":"388298a0c89f4a38b2fed4cd4123d441"
}
說明:接口postParam是返回請求所有參數(shù)和請求頭信息。代碼就不展示出來了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android完美實(shí)現(xiàn) 拍照 選擇圖片 剪裁等代碼分享
本文給大家分享了2個(gè)安卓實(shí)現(xiàn)實(shí)現(xiàn) 拍照 選擇圖片 剪裁等的代碼,都是從正式項(xiàng)目中提取出來了,非常實(shí)用,有需要的小伙伴可以參考下。2016-01-01
詳解RecyclerView設(shè)置背景圖片長寬一樣(以GridLayoutManager為例)
這篇文章主要介紹了詳解RecyclerView設(shè)置背景圖片長寬一樣(以GridLayoutManager為例),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
Android之禁止ViewPager滑動(dòng)實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了Android之禁止ViewPager滑動(dòng)實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android 中NumberPicker,DatePicker與DatePickerDialog中分割顏色的修改實(shí)例代
這篇文章主要介紹了Android 中NumberPicker,DatePicker與DatePickerDialog中分割顏色的修改實(shí)例代碼的相關(guān)資料,這里提供實(shí)例代碼,需要的朋友可以參考下2017-03-03
Android 中SQLite技術(shù)實(shí)例詳解
這篇文章主要介紹了Android 中SQLite技術(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android WebView無法加載H5頁面的常見問題和解決方法
Android WebView 是一種視圖組件,使得 Android 應(yīng)用能夠顯示網(wǎng)頁內(nèi)容,它基于 Chromium,具備現(xiàn)代瀏覽器的許多功能,包括支持 HTML5、CSS3 和 JavaScript,本文給大家介紹了Android WebView無法加載H5頁面的常見問題和解決方法,需要的朋友可以參考下2025-03-03
Android數(shù)據(jù)庫LitePal的基本用法詳解
這篇文章主要介紹了Android數(shù)據(jù)庫LitePal的基本用法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01
Android開發(fā)中使用WebView控件瀏覽網(wǎng)頁的方法詳解
這篇文章主要介紹了Android開發(fā)中使用WebView控件瀏覽網(wǎng)頁的方法,結(jié)合實(shí)例形式較為詳細(xì)的總結(jié)分析了Android WebView控件的功能、布局、設(shè)置、常用方法及相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Android系統(tǒng)添加自定義鼠標(biāo)樣式通過按鍵切換實(shí)例詳解
在本篇文章里小編給大家整理的是關(guān)于Android系統(tǒng)添加自定義鼠標(biāo)樣式通過按鍵切換實(shí)例詳解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2019-11-11

