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

seo综合查询站长工具如何优化网站速度

seo综合查询站长工具,如何优化网站速度,遵义seo快速排名,网页开发工具所见即所得OkHttpClient 是一个由 Square 公司开发的 HTTP 客户端库#xff0c;用于在 Android 和 Java 应用中进行网络请求。它支持同步和异步请求、连接池、超时设置、拦截器等功能#xff0c;适合用于高性能网络请求#xff0c;特别是在需要处理复杂的网络操作时。 一、OKHttpClien…OkHttpClient 是一个由 Square 公司开发的 HTTP 客户端库用于在 Android 和 Java 应用中进行网络请求。它支持同步和异步请求、连接池、超时设置、拦截器等功能适合用于高性能网络请求特别是在需要处理复杂的网络操作时。 一、OKHttpClient介绍 主要特点 同步和异步请求 同步请求会在当前线程等待响应适合不需要并发的简单请求。 异步请求会将网络操作交由后台线程处理不会阻塞主线程适合需要并发处理或在 Android 等环境中使用。 连接池 OkHttp 默认会使用连接池来复用 HTTP 连接从而提高性能减少连接的建立和关闭的开销。 拦截器 (Interceptor) 拦截器允许在请求和响应时进行操作例如可以在请求发送前添加认证信息或在响应到达后进行日志记录。 自动处理 HTTP/2 和 SPDY OkHttp 默认支持 HTTP/2 协议可以提升多路复用性能使多个请求共享一个 TCP 连接。 缓存机制 OkHttp 提供了默认的缓存机制可以根据 HTTP 响应头自动缓存请求结果减少重复网络请求。 超时控制 可以对连接、读取和写入操作分别设置超时避免长时间无响应的请求卡住应用。 二、在实际项目中的应用 1引入maven配置 !-- ok的Http连接池 --     dependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.9.3/version /dependency 2自定义HttpUtils工具类 import com.alibaba.fastjson.JSONObject; import com.yan.project.httpUtils.okHttp2.HttpRequestBody; import lombok.extern.slf4j.Slf4j; import okhttp3.*;import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.concurrent.TimeUnit;Slf4j public class OkHttpUtils {private OkHttpUtils() {throw new IllegalArgumentException(Utility class);}private static final String MIME_JSON application/json; charsetutf-8;private static OkHttpClient httpClient new OkHttpClient.Builder().connectTimeout(3, TimeUnit.SECONDS).writeTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).addInterceptor((Interceptor.Chain chain) - {Request req chain.request();try {Response res chain.proceed(req);return res;} catch (Exception ex) {throw ex;}}).build();// GET-无参public static String getJson(String url) throws IOException {return basicGet(url, null);}// GET-有参public static String get(String url, MapString, Object paramMap) throws Exception {StringBuilder sb new StringBuilder(url);if (paramMap ! null !paramMap.isEmpty()) {SetString keySet paramMap.keySet();for (String key : keySet) {sb.append(sb.toString().contains(?) ? : ?);sb.append(key).append().append(paramMap.get(key));}url sb.toString();}return basicGet(url, null);}// GET-有参、有请求头public static String getWithHeades(String url, MapString, Object paramMap, MapString, String headers) throws Exception {StringBuilder sb new StringBuilder(url);if (paramMap ! null !paramMap.isEmpty()) {SetString keySet paramMap.keySet();for (String key : keySet) {sb.append(sb.toString().contains(?) ? : ?);sb.append(key).append().append(paramMap.get(key));}url sb.toString();}return basicGet(url, headers);}// GET-jsonpublic static String getJsonWithHeader(String url, MapString, String headerMap) throws IOException {Request.Builder request new Request.Builder().url(url).get().header(Accept, MIME_JSON);if (headerMap ! null) {headerMap.forEach(request::header);}try (Response response httpClient.newCall(request.build()).execute()) {log.info(response_code:{}, response_body:{}, response.code(), response.body().string());return response.body().string();}}// POST-json传参public static String postJsonWithHeader(String url, Object reqBody, MapString, String headers) throws IOException {Request.Builder request new Request.Builder().url(url).header(Accept, MIME_JSON).post(FormBody.create(MediaType.parse(MIME_JSON), JSONObject.toJSONString(reqBody)));// 遍历并添加 headerif (headers ! null) {headers.forEach(request::header);}try (Response response httpClient.newCall(request.build()).execute()) {log.info(response_code:{}, response_body:{}, response.code(), response.body().string());return response.body().string();}}// POST-param传参public static String postParamWithHeader(String url, MapString, Object paramMap, MapString, String headers) throws IOException {FormBody.Builder formBody new FormBody.Builder();if (Objects.nonNull(paramMap)) {paramMap.forEach((k, v) - formBody.add(k, (String) v));}Request.Builder request new Request.Builder().url(url).header(Accept, MIME_JSON).post(formBody.build());// 遍历并添加 headerif (headers ! null) {headers.forEach(request::header);}try (Response response httpClient.newCall(request.build()).execute()) {log.info(response_code:{}, response_body:{}, response.code(), response.body().string());return response.body().string();}}public static final String octet_stream_str application/octet-stream;public static final MediaType octet_stream MediaType.parse(octet_stream_str);public static void putStream(String url, InputStream inputStream, long contentLength) {Response response;try {RequestBody requestBody2 new HttpRequestBody(inputStream, contentLength);Request request new Request.Builder().url(url).addHeader(Content-Type, octet_stream_str).put(requestBody2).build();response httpClient.newCall(request).execute();String result response.body().string();if (response.code() ! 200) {throw new Exception(Saturn SDK stream upload failed, url: url response.code(): response.code() , msg: result);}} catch (Exception e) {e.printStackTrace();} finally {closeQuietly(inputStream);}}public static String putFile(String url, File file) throws Exception {RequestBody requestBody RequestBody.create(octet_stream, file);Request request new Request.Builder().url(url).addHeader(Content-Type, octet_stream_str).put(requestBody).build();Response response httpClient.newCall(request).execute();String result response.body().string();int code response.code();log.info(putFile end, url:{}, response.code:{}, result:{}, url, code, result);if (code ! 200) {throw new Exception(putFile failed, response.code(): code , result: result);}return result;}private static String basicGet(String url, MapString, String headers) throws IOException {Request.Builder builder new Request.Builder().url(url).get();// 遍历并添加 headerif (headers ! null) {headers.forEach(builder::header);}try (Response response httpClient.newCall(builder.build()).execute()) {return response.body().string();}}private static String basicDelete(String url, Headers headers) throws IOException {Request.Builder builder new Request.Builder().url(url).delete();if (headers ! null) {builder.headers(headers);}try (Response response httpClient.newCall(builder.build()).execute()) {return response.body().string();}}public static void closeQuietly(Closeable is) {if (is ! null) {try {is.close();} catch (Exception ex) {log.error(Resources encounter an exception when closingex{}, ex.getMessage());}}} }这个 OkHttpUtils 类封装了 OkHttpClient 来进行 HTTP 请求支持 GET、POST、PUT 等常见的 HTTP 方法并提供了对参数、请求头、文件上传等功能的支持。以下是它的主要功能和使用方法的解释 OkHttpClient 实例 使用 OkHttpClient.Builder() 创建设置了超时时间连接超时 3 秒读写超时 5 秒并添加了拦截器。 静态方法 getJson, get, getWithHeades, getJsonWithHeader用于 GET 请求支持无参、有参数和请求头的场景。 postJsonWithHeader, postParamWithHeader用于 POST 请求支持 JSON 数据或表单数据传递。 putStream, putFile用于 PUT 请求支持流和文件上传。 basicGet, basicDelete内部通用方法分别处理 GET 和 DELETE 请求。 三、拓展和使用建议 增强错误处理当前仅在拦截器中简单处理了异常可以考虑在各个方法中增加详细的异常处理机制。连接池管理默认情况下OkHttp 使用连接池来提升性能类内部也可以进一步定制连接池策略来优化并发性能。异步支持所有请求均为同步请求适合使用时可以考虑用 OkHttp 提供的 enqueue() 方法进行异步操作防止阻塞主线程。 通过这些封装OkHttpUtils 能够方便地发送 HTTP 请求并处理响应。在实际项目中你可以根据需要调整超时设置、缓存机制等配置。
http://www.w-s-a.com/news/862336/

相关文章:

  • 网站开发工具书焦作网站开发公司电话
  • 石狮网站建设报价百度爱采购怎么优化排名
  • 广州网站开发系统如何建设百度网站
  • 免费建立一个个人网站网站流量图怎么做
  • 微信网站建设公司首选网站后台更新 前台不显示
  • 撰写网站专题活动策划方案未成年做网站
  • 免费在线响应式网站自助建站网页设计与网站建设试卷
  • 四川省肿瘤医院搜索优化整站优化
  • 新钥匙建站深圳创业补贴政策2023
  • 建网站需要准备什么网站三个月没排名
  • 网站运营规划网站推广的手段
  • cvm可以做网站服务器吗网片围栏
  • 培训前端网站开发网站开发 群
  • 成都武侯区网站建设wordpress菜单分类目录
  • 牡丹江市西安区建设局网站给公司做的东西放到自己网站上
  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务
  • 电子商务网站建设好么有一个网站怎么做cpc
  • 镇海住房和建设交通局网站跨境电商就是忽悠人的
  • 维修网站怎么做跨境电商发展现状如何
  • 手机网站设计公司皆选亿企邦桐乡市建设局官方网站
  • 企业培训 电子商务网站建设 图片山东省住房和城乡建设厅网站主页
  • 做酒招代理的网站赣icp南昌网站建设
  • 怎样做网站內链大连市建设工程信息网官网
  • 网站软件免费下载安装泰安网站建设收费标准
  • 部署iis网站校园网站设计毕业设计
  • 网站快慢由什么决定塘沽手机网站建设
  • 苏州那家公司做网站比较好装修队做网站
  • 外贸网站推广中山网站流量团队
  • 网站前端设计培训做一份网站的步zou