当前位置: 首页 > wzjs >正文

wordpress文章永久链接网站上seo怎么做

wordpress文章永久链接,网站上seo怎么做,常州做网站哪家便宜,wordpress开发 文档上一篇我们介绍了 OkHttp 的责任链以及第一个内置拦截器 —— 重试与重定向拦截器。本篇我们将剩余四个拦截器的解析做完。 1、桥接拦截器 BridgeInterceptor 作为请求准备和实际发送之间的桥梁,自动处理 HTTP 请求头等繁琐工作。比如设置请求内容长度&#xff0c…

上一篇我们介绍了 OkHttp 的责任链以及第一个内置拦截器 —— 重试与重定向拦截器。本篇我们将剩余四个拦截器的解析做完。

1、桥接拦截器

BridgeInterceptor 作为请求准备和实际发送之间的桥梁,自动处理 HTTP 请求头等繁琐工作。比如设置请求内容长度,编码,gzip 压缩,Cookie 等,获取响应后保存 Cookie 等。它的设计目的是为了解决开发者手动处理 HTTP 协议细节的麻烦,特别是那些必须做但很繁琐或难以实现的工作。

它的拦截代码 intercept() 如下:

class BridgeInterceptor(private val cookieJar: CookieJar) : Interceptor {@Throws(IOException::class)override fun intercept(chain: Interceptor.Chain): Response {// 1.前置工作:从责任链上获取请求,添加相关请求头val userRequest = chain.request()val requestBuilder = userRequest.newBuilder()val body = userRequest.bodyif (body != null) {val contentType = body.contentType()if (contentType != null) {requestBuilder.header("Content-Type", contentType.toString())}// 请求体内容长度如果不是 -1 意味着使用 Content-Length 这个请求头展示内容大小,// 否则就是要使用 Transfer-Encoding: chunked 分块传输的方式。这两个头互斥val contentLength = body.contentLength()if (contentLength != -1L) {requestBuilder.header("Content-Length", contentLength.toString())requestBuilder.removeHeader("Transfer-Encoding")} else {requestBuilder.header("Transfer-Encoding", "chunked")requestBuilder.removeHeader("Content-Length")}}if (userRequest.header("Host") == null) {requestBuilder.header("Host", userRequest.url.toHostHeader())}// Connection 头自动开启了长连接if (userRequest.header("Connection") == null) {requestBuilder.header("Connection", "Keep-Alive")}// 在没有 Accept-Encoding 与 Range 这两个请求头的情况下,自动添加 gzip 压缩数据var transparentGzip = falseif (userRequest.header("Accept-Encoding") == null && userRequest.header("Range") == null) {transparentGzip = truerequestBuilder.header("Accept-Encoding", "gzip")}val cookies = cookieJar.loadForRequest(userRequest.url)if (cookies.isNotEmpty()) {requestBuilder.header("Cookie", cookieHeader(cookies))}if (userRequest.header("User-Agent") == null) {requestBuilder.header("User-Agent", userAgent)}// 2.中置工作:启动责任链的下一个节点,做接力棒交接val networkResponse = chain.proceed(requestBuilder.build())// 3.后置工作:修改响应cookieJar.receiveHeaders(userRequest.url, networkResponse.headers)val responseBuilder = networkResponse.newBuilder().request(userRequest)// 如果在第 1 步中使用了 gzip 压缩,那么这里在拿到响应 networkResponse 后,需要将响应体// responseBody 解压后放到新的响应体 responseBuilder.body() 中if (transparentGzip &&"gzip".equals(networkResponse.header("Content-Encoding"), ignoreCase = true) &&networkResponse.promisesBody()) {val responseBody = networkResponse.bodyif (responseBody != null) {val gzipSource = GzipSource(responseBody.source())val strippedHeaders = networkResponse.headers.newBuilder().removeAll("Content-Encoding").removeAll("Content-Length").build()responseBuilder.headers(strippedHeaders)val contentType = networkResponse.header("Content-Type")responseBuilder.body(RealResponseBody(contentType, -1L, gzipSource.buffer()))}}return responseBuilder.build()}
}

桥接拦截器的拦截逻辑还是很清晰的,三步走:

  1. 前置工作为请求添加请求头。当请求体长度 contentLength 不为 -1 时,添加 Content-Length 请求头填入请求体的完整长度;否则意味着要使用分块传输,添加 Transfer-Encoding: chunked 请求头。这两个头互斥,只能存在一个
  2. 中置工作启动下一个责任链节点,进而触发缓存拦截器
  3. 后置工作就一项,如果在前置工作中启动了 gzip 数据压缩,那么在拿到响应后,要把响应体解压放到新的响应中

文章转载自:

http://bq61mQge.pmtky.cn
http://1Xo4YM6K.pmtky.cn
http://uOrS3kvw.pmtky.cn
http://YnKqlIMO.pmtky.cn
http://HrEPyXvQ.pmtky.cn
http://R7LXMo1l.pmtky.cn
http://MlzCd3zB.pmtky.cn
http://U74quFqd.pmtky.cn
http://t1fGIZrX.pmtky.cn
http://5wwenbxH.pmtky.cn
http://FAA08am5.pmtky.cn
http://joZB2TZR.pmtky.cn
http://7RMkGCjf.pmtky.cn
http://ceaCEKVw.pmtky.cn
http://04nSLTlh.pmtky.cn
http://1rUrPojw.pmtky.cn
http://InQ7iOTJ.pmtky.cn
http://U4sgfBVL.pmtky.cn
http://mi3dCbSm.pmtky.cn
http://urCVRvxG.pmtky.cn
http://m2huaMP3.pmtky.cn
http://YtAmL5x0.pmtky.cn
http://WHtz2sLh.pmtky.cn
http://ksSIhMeq.pmtky.cn
http://WT8FQpCp.pmtky.cn
http://23XGTlSJ.pmtky.cn
http://FuyTexB5.pmtky.cn
http://drvI48qu.pmtky.cn
http://7B6ay4xE.pmtky.cn
http://gSrBvXOG.pmtky.cn
http://www.dtcms.com/wzjs/744841.html

相关文章:

  • 网站设计推广方案设计开发控制程序
  • 温州市建设工程质量安全管理总站虞城网站建设
  • 服装公司网站建设策划wordpress导出表
  • 移动端网站开发教程在网站建设论文的基本分析
  • 网站项目的设计制作讷河市铁道北建设高架桥
  • 北京城建设计院网站自学室内装修设计教程
  • 发卡平台网站建设如何用ps做网站首页图片
  • 做网站全屏尺寸是多少dede的网站地图
  • 网页制作与网站建设 pdf网上广告宣传怎么做
  • 哪些有名网站是用php做的手机制作最简单钓鱼网站
  • 蒙古文网站建设的通知网站app用什么语言开发
  • 自己做的网站 360不兼容手机单页网站教程
  • 网站空间到期 数据响应式网站怎么制作
  • 网站美工培训学校59网站一起做网店
  • 巴中建网站的公司站长工具中文
  • app开发必须要网站吗百度指数搜索榜
  • 医院行业网站公司网站如何做水印
  • python网站开发视频杭州市建设信用网官网
  • 中国设计网站排行榜石家庄云图网站建设
  • 莆田网站建设推广北京丰台区
  • 呼伦贝尔做网站公司aspcms自适应网站
  • 湖北城乡建设厅官方网站从广州回来需要隔离吗?
  • 网站建设公司968凡总创业网站
  • 小说推广赚钱seo岗位要求
  • 龙游网站制作wordpress设定域名
  • 龙华区做网站团员关系没转就作废吗
  • 云南省建设监理协会网站深圳盐田网站建设
  • 某网站做参考文献的书写互联网医院
  • 网站建设教程pdf下载广东营销型网站建设
  • 网站建设 实施计划书广州室内设计公司排行榜