国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

淺談Okhttp去除請求頭user-agent

2019-10-22 18:20:42
字體:
供稿:網(wǎng)友

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;@Overridepublic 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í)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蚌埠市| 鲁甸县| 福州市| 浑源县| 北安市| 古田县| 互助| 鱼台县| 郎溪县| 武乡县| 赞皇县| 交口县| 西贡区| 凉城县| 石台县| 镇康县| 云和县| 车致| 盐池县| 敦煌市| 蓬莱市| 赣榆县| 岗巴县| 瑞昌市| 饶平县| 聂荣县| 班玛县| 肥乡县| 德安县| 教育| 临夏市| 会昌县| 海安县| 库尔勒市| 鲜城| 方正县| 彭泽县| 亳州市| 定远县| 五指山市| 呼图壁县|