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

wordpress的插件下载地址武汉seo优化分析

wordpress的插件下载地址,武汉seo优化分析,华亭县门户网站,用邮箱地址做网站域名好吗系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题。获取源码 下面带大家学习如何在 Zuul 中输出请求响应的信息来辅助我们解决一些问题。 熟悉 Zuul 的朋友都知道,Zuul 中…

系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题。获取源码

下面带大家学习如何在 Zuul 中输出请求响应的信息来辅助我们解决一些问题。

熟悉 Zuul 的朋友都知道,Zuul 中有 4 种类型过滤器,每种都有特定的使用场景,要想记录响应数据,那么必须是在请求路由到了具体的服务之后,返回了才有数据,这种需求就适合用 post 过滤器来实现了。代码如下所示。

HttpServletRequest req = (HttpServletRequest) RequestContext.getCurrentContext().getRequest();
System.err.println("REQUEST:: " + req.getScheme() + " " + req.getRemoteAddr() + ":" + req.getRemotePort());
StringBuilder params = new StringBuilder("?");
// 获取URL参数
Enumeration<String> names = req.getParameterNames();
if (req.getMethod().equals("GET")) {while (names.hasMoreElements()) {String name = (String) names.nextElement();params.append(name);params.append("=");params.append(req.getParameter(name));params.append("&");}
}
if (params.length() > 0) {params.delete(params.length() - 1, params.length());
}
System.err.println("REQUEST:: > " + req.getMethod() + " " + req.getRequestURI() + params + " " + req.getProtocol());
Enumeration<String> headers = req.getHeaderNames();
while (headers.hasMoreElements()) {String name = (String) headers.nextElement();String value = req.getHeader(name);System.err.println("REQUEST:: > " + name + ":" + value);
}
final RequestContext ctx = RequestContext.getCurrentContext();
// 获取请求体参数
if (!ctx.isChunkedRequestBody()) {ServletInputStream inp = null;try {inp = ctx.getRequest().getInputStream();String body = null;if (inp != null) {body = IOUtils.toString(inp);System.err.println("REQUEST:: > " + body);}} catch (IOException e) {e.printStackTrace();}
}

输出效果如图 1 所示。

 获取响应内容的第一种方式,代码如下所示。

try {Object zuulResponse = RequestContext.getCurrentContext().get("zuulResponse");if (zuulResponse != null) {RibbonHttpResponse resp = (RibbonHttpResponse) zuulResponse;String body = IOUtils.toString(resp.getBody());System.err.println("RESPONSE:: > " + body);resp.close();RequestContext.getCurrentContext().setResponseBody(body);}
} catch (IOException e) {e.printStackTrace();
}

 获取响应内容的第二种方式,代码如下所示。

public static void main(String[] args) {InputStream stream = RequestContext.getCurrentContext().getResponseDataStream();try {if (stream != null) {String body = IOUtils.toString(stream);System.err.println("RESPONSE:: > " + body);RequestContext.getCurrentContext().setResponseBody(body);}} catch (IOException e) {e.printStackTrace();}
}

为什么上面两种方式可以取到响应内容?

在 RibbonRoutingFilter 或者 SimpleHostRoutingFilter 中可以看到下面一段代码,代码如下所示。

public Object run() {RequestContext context = RequestContext.getCurrentContext();this.helper.addIgnoredHeaders();try {RibbonCommandContext commandContext = buildCommandContext(context);ClientHttpResponse response = forward(commandContext);setResponse(response);return response;} catch (ZuulException ex) {throw new ZuulRuntimeException(ex);} catch (Exception ex) {throw new ZuulRuntimeException(ex);}
}

 forward() 方法对服务调用,拿到响应结果,通过 setResponse() 方法进行响应的设置,代码如下所示。

protected void setResponse(ClientHttpResponse resp) throws ClientException, IOException {RequestContext.getCurrentContext().set("zuulResponse", resp);this.helper.setResponse(resp.getStatusCode().value(), resp.getBody() == null ? null : resp.getBody(),resp.getHeaders());
}

上面第一行代码就可以解释我们的第一种获取的方法,这里直接把响应内容加到了 RequestContext 中。

第二种方式的解释就在 helper.setResponse 的逻辑里面了,代码如下所示。

public void setResponse(int status, InputStream entity, MultiValueMap<String, String> headers) throws IOException {RequestContext context = RequestContext.getCurrentContext();context.setResponseStatusCode(status);if (entity != null) {context.setResponseDataStream(entity);}// .....
}

http://www.lbrq.cn/news/2719819.html

相关文章:

  • 企业网站推广的策略有哪些央视网新闻
  • 去网站做dnf代练要押金吗百度网站首页入口
  • 网站建设和优化的好处软文范例100字以内
  • 做网站需要准备的工具外汇交易平台
  • 河南靠谱seo电话宁波seo搜索引擎优化
  • 廊坊做网站多少钱腾讯朋友圈广告投放价格
  • 长沙正规网站制作公司做网页用什么软件好
  • 修改wordpress后台默认地址优化设计三年级上册语文答案
  • 百度做网站投广告百度关键词挖掘工具爱站网
  • 做外贸的几个网站营销方式有哪几种
  • 网站建设怎么插入邮箱韩国热搜榜
  • 一个网站百度百科怎么做网络营销和传统营销的区别
  • 合肥做网站公司哪家好百度seo工作室
  • 涿州网站制作百度首页登录入口
  • pc 手机自适应网站用什么做关键词推广优化外包
  • 检测站点是否使用wordpress网站里的友情链接
  • 泉州做网站优化公司seo关键词排名优
  • 做的网站怎么转成网址链接百度企业
  • 网站建设 武讯科技搜索引擎哪个最好用
  • 有哪些做兼职的设计网站有哪些重庆百度快照优化排名
  • 已经备案的域名做电影网站营销自动化工具
  • 电商网站开发制作宁德市教育局
  • php在线购物网站建设抖音权重查询工具
  • 网匠网站建设有限公司服装营销方式和手段
  • 便宜网站建设鞋子软文推广300字
  • 江浙区域网络公司排名seo 网站优化推广排名教程
  • wordpress社交分享非插件seo企业推广案例
  • 免费域名网站建设合肥网站优化搜索
  • 建网站做商城个体户资质可以品牌型网站制作价格
  • 哪些网站做代理商百度关键词搜索排名帝搜软件
  • 流处理、实时分析与RAG驱动的Python ETL框架:构建智能数据管道(上)
  • 沈帅波出席茅台红缨子高粱节探讨产业赋能新模式
  • 零信任架构(Zero Trust Architecture, ZTA)(通过动态验证和最小权限控制,实现对所有访问请求的严格授权和持续监控)
  • antdv Modal的简单使用
  • PCBA:电子产品制造的核心环节
  • C++写文件,open函数的参数in、out、ate、app、trunc等标志分别是什么作用?