小编给大家分享一下Okhttp如何去除请求头user-agent,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司是一家专注于做网站、成都网站建设与策划设计,东丰网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:东丰等地区。东丰做网站价格咨询:028-86922220
Http Header之User-Agent
User-Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent页简称UA。她是一个特殊字符串头,是一种想访问网站提供你说使用的浏览器类型和版本,操作系统和版本,浏览器内核等信息的标识,用户所访问的网站可以显示不同的排版,而为用户提供更好的体验或者进行信息统计
现象说明
用OKhttp框架请求http请求的时候会把user-agent带上;然而有些时候我们需要把请求头里面的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返回结果:
{
"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"
}你会发现: "user-agent":"okhttp/3.4.1" 这是由于okhttp内置拦截器BridgeInterceptor默认添加的。我们需要借助网络拦截器来重新拦截请求头;
解决方法:
利用拦截器来实现对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();然后利用网络拦截器来设置自定义的拦截器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);//应用拦截器 okBuilder.addNetworkInterceptor(logInterceptor);//网络拦截器
最后重新发送网络请求:
{
"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是返回请求所有参数和请求头信息。代码就不展示出来了。
以上是“Okhttp如何去除请求头user-agent”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
网站标题:Okhttp如何去除请求头user-agent
链接分享:http://www.jxjierui.cn/article/pjjgjo.html


咨询
建站咨询
