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

做暧在线观看网站网页制作教程 基础

做暧在线观看网站,网页制作教程 基础,搜索关键词然后排名怎样提升,个人网站备案 网站名称1. Interceptor 简介 okhttp3.Interceptor 是 OkHttp 提供的一个核心接口,用于拦截 HTTP 请求和响应,允许开发者在请求发送前和响应接收后插入自定义逻辑。它在构建灵活、可扩展的网络请求逻辑中扮演着重要角色。常见的用途包括: 添加请求头…

1. Interceptor 简介

okhttp3.Interceptor 是 OkHttp 提供的一个核心接口,用于拦截 HTTP 请求和响应,允许开发者在请求发送前和响应接收后插入自定义逻辑。它在构建灵活、可扩展的网络请求逻辑中扮演着重要角色。常见的用途包括:

  • 添加请求头(如认证 Token、上下文信息)
  • 日志记录(调试请求和响应)
  • 请求重试或错误处理
  • 缓存控制
  • 性能监控(如记录请求耗时)

Interceptor 接口提供一个 intercept(Chain chain) 方法,该方法接收一个 Chain 对象,通过调用 chain.proceed(request) 可以继续请求链的处理。

其中Chain 提供了以下关键方法:

  • Request request():获取当前请求。
  • Response proceed(Request request):将请求传递给下一个拦截器或服务器。
  • Connection connection():获取当前连接信息(仅限网络拦截器)。

2. Interceptor代码示例

step1.定义拦截器

定义一个 AuthInterceptor,用于添加请求头(认证 Token):

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;import java.io.IOException;public class AuthInterceptor implements Interceptor {private final String authToken;public AuthInterceptor(String authToken) {this.authToken = authToken;}@Overridepublic Response intercept(Chain chain) throws IOException {// 获取原始请求Request originalRequest = chain.request();// 构建新的请求,添加认证 Token 到请求头Request newRequest = originalRequest.newBuilder().header("Authorization", "userDefineAuthToken-" + authToken).build();// 继续请求链return chain.proceed(newRequest);}
}

再定义一个LoggingInterceptor,用于记录请求日志

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;import java.io.IOException;public class LoggingInterceptor implements Interceptor {@Overridepublic Response intercept(Chain chain) throws IOException {Request request = chain.request();long startTime = System.currentTimeMillis();// 记录请求信息System.out.println("┌───────────────────────────────────────────────────────────────────────");System.out.println("│ Sending request: " + request.method() + " " + request.url());System.out.println("│ requestHeaders: ");for (String headerName : request.headers().names()) {System.out.println("│   " + headerName + ": " + request.header(headerName));}// 执行请求并记录响应Response response = chain.proceed(request);long duration = System.currentTimeMillis() - startTime;// 记录响应信息System.out.println("│ Received response: " + response.code() + " in " + duration + "ms");System.out.println("│ responseHeaders: ");for (String headerName : response.headers().names()) {System.out.println("│   " + headerName + ": " + response.header(headerName));}System.out.println("└───────────────────────────────────────────────────────────────────────");return response;}
}

step2.使用 OkHttpClient 添加拦截器并发送请求


import java.io.IOException;import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class InterceptorExample {public static void main(String[] args) {// 0. 创建认证 TokenString token = "your_access_token_here";// 1. 创建 Interceptor 实例AuthInterceptor authInterceptor = new AuthInterceptor(token);LoggingInterceptor loggingInterceptor = new LoggingInterceptor();// 2. 构建 OkHttpClient 并添加拦截器// 拦截器会按照添加顺序依次执行,因此 AuthInterceptor 会在 LoggingInterceptor 之前运行。OkHttpClient client = new OkHttpClient.Builder().addInterceptor(authInterceptor) // 添加token拦截器.addInterceptor(loggingInterceptor)  // 添加日志拦截器.build();// 3. 创建请求对象(例如:GET /data)Request request = new Request.Builder().url("https://www.baidu.com/s?wd=iphone")  // 替换为你的 API 地址.get().build();// 4. 发送请求并处理响应try (Response response = client.newCall(request).execute()) {if (!response.isSuccessful()) {throw new IOException("Unexpected code " + response);}// 读取并打印响应体(可选)String responseBody = response.body().string();System.out.println("Response Body:\n" + responseBody);} catch (IOException e) {e.printStackTrace();}}
}

输出示例如下: 

┌───────────────────────────────────────────────────────────────────────
│ Sending request: GET https://www.baidu.com/s?wd=iphone
│ requestHeaders: 
│   Authorization: userDefineAuthToken-your_access_token_here
│ Received response: 200 in 228ms
│ responseHeaders: 
│   Access-Control-Allow-Credentials: true
│   Date: Mon, 12 May 2025 12:12:59 GMT
│   Vary: Accept-Encoding
└───────────────────────────────────────────────────────────────────────
Response Body:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><title>百度安全验证</title>......
</head>
<body><div class="timeout hide-callback"><div class="timeout-img"></div></div>......
</body>
</html>

step3.注意事项

  • Token 安全性:请勿在生产环境中硬编码 Token,应从安全存储或认证服务中动态获取。
  • 异常处理:示例中使用了基本的异常处理逻辑,建议根据业务需求进行扩展。
  • 资源管理:使用 try-with-resources 或手动调用 response.body().close() 确保资源被释放。
  • 日志安全性:避免在生产环境中记录敏感信息(如 Token、密码、请求体内容),可在正式环境移除或禁用日志拦截器。
  • 性能影响:日志记录可能增加请求处理时间,建议在调试阶段启用,生产环境关闭。
  • 扩展性:可以根据需求自定义日志格式,例如添加请求体、响应体内容(需谨慎处理)。

3. 扩展&总结

3.1 拦截器的分类与使用场景

拦截器类型特点
应用拦截器每个请求只执行一次,适用于添加统一的请求头、日志等通用逻辑。
网络拦截器在重试时会再次执行,适用于网络层的处理,如缓存、代理等。

添加方式区别:

  • 应用拦截器:client.addInterceptor(...)
  • 网络拦截器:client.addNetworkInterceptor(...)

两种拦截器其实都是 Interceptor 的实现类,只是在功能上做了区分:

3.2 注意事项

  1. 线程安全:拦截器可能在多个线程中运行,需注意线程安全。
  2. 性能影响:避免在拦截器中执行耗时操作(如数据库查询)。
  3. 避免无限循环:确保 proceed 方法被调用,否则请求会阻塞。
  4. 请求不可变性:修改请求时需通过 newBuilder() 创建副本,不能直接修改原始请求。
  5. 敏感信息:日志拦截器中应避免打印敏感数据(如 Token、密码)。

3.3 总结

okhttp3.Interceptor 是一个强大且灵活的工具,能够帮助开发者在 HTTP 请求生命周期中插入各种逻辑。通过合理使用拦截器,可以简化网络请求的复杂度,提高代码的可维护性和复用性。在实际开发中,建议结合具体业务需求选择合适的拦截器类型,并遵循最佳实践。


文章转载自:

http://lAApPOkP.pxwzk.cn
http://PZK2twPz.pxwzk.cn
http://dxGdTAkt.pxwzk.cn
http://UHd5Adyz.pxwzk.cn
http://xI0DYwKP.pxwzk.cn
http://y3649NJA.pxwzk.cn
http://IODFm2Eh.pxwzk.cn
http://jJr8XSBk.pxwzk.cn
http://jEPSVf35.pxwzk.cn
http://9YiKX21z.pxwzk.cn
http://TW9EK99E.pxwzk.cn
http://AeHoduXq.pxwzk.cn
http://3CbtkvX9.pxwzk.cn
http://AqvUz0bj.pxwzk.cn
http://oQFSztzP.pxwzk.cn
http://5J1sVwCD.pxwzk.cn
http://zw6cxMHQ.pxwzk.cn
http://WhzvQ5w2.pxwzk.cn
http://CAJCzegs.pxwzk.cn
http://Ig5VxT93.pxwzk.cn
http://KtoiTrY1.pxwzk.cn
http://hkxdn9qs.pxwzk.cn
http://Ujnzq5xb.pxwzk.cn
http://vVP3XxpK.pxwzk.cn
http://22UeUdMl.pxwzk.cn
http://ZB94eUdh.pxwzk.cn
http://aCxs9VrR.pxwzk.cn
http://xzonpsxh.pxwzk.cn
http://k2JmMarE.pxwzk.cn
http://7s6iEIys.pxwzk.cn
http://www.dtcms.com/wzjs/632652.html

相关文章:

  • 宁波网站设计企业怎么注册中视频账号
  • 合肥高新区建设发展局网站网站制作花多少钱
  • 邢台哪个公司做网站好哪里做网站排名
  • 个人网站建设月租抵30元网站没有域名
  • 单页网站建设服务好的商家jsp网站开发详解 赵增敏
  • 郑州网站建设如何像发微博 发wordpress
  • 有哪些网站可以做印度市场调研网站备案所需资料
  • 在哪网站开发软件鸣蝉建站平台
  • 企业网站的用户需求分析杭州制作网站企业
  • 邯郸建设网站的公司哪家好推广策略英语
  • 网站服务器怎么查询wordpress模板安装
  • 江西建设质量安全监督网站wordpress 404比较多
  • 网站出现搜索广州实时热点新闻事件
  • 网站开发知识页面布局标准格式
  • 长沙专业公司网站建设源头wordpress更改鼠标
  • 重庆网站建设重庆网站设计做网站需要的图片
  • 黑白高端大气网站设计工作室织梦dedecms模板eclipse开发网站开发
  • 怎么做网站盈利太阳能建设网站
  • 建三江建设局网站南宁网站推广排名
  • 唐山做网站建设的公司做网站有哪几种语言
  • 阿里云个人网站备案哪个网站可以做破案h5
  • 成都建设诚信网站网站域名域名
  • 网站模板 登陆注册网站不需要手机验证的
  • 做网站哪家好 青岛微小店网站建设官网
  • 自己如何做网站教程企业融资的目的和意义
  • 怎么做门淘宝网站平谷青岛网站建设
  • 建设银行官方网站地址php网站开发实例教程的作者
  • 网站广告设计怎么做海安企业网站建设
  • 现代农业建设 乡网站棋牌游戏网站模板
  • 哈尔滨精品建站知名网站制作服务