202109-28 使用RequestBodyAdvice实现对Http请求非法字符过滤 RequestBodyAdvice对Http请求非法字符过滤利用RequestBodyAdvice对HTTP请求参数放入body中的参数进行非法字符过滤。要求:spring4.2+额外的pom.xml<dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.44</version></dependency>代码packagecom.niugang.con... 继续阅读 >
202109-28 使用注解+RequestBodyAdvice实现http请求内容加解密方式 注解主要用来指定那些需要加解密的controller方法实现比较简单@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public@interfaceSecretAnnotation{booleanencode()defaultfalse;booleandecode()defaultfalse;}使用时添加注解在controller的方法上@PostMapping("/preview")@SecretAnnotation(decode=true)publicResponseVO<ContractSignVO>previewContract(@RequestBodyFillCo... 继续阅读 >
202109-04 Spring Boot+Shiro实现一个Http请求的Basic认证 目录前言实践部分测试部分总结前言今天跟小伙伴们分享一个实战内容,使用SpringBoot+Shiro实现一个简单的Http认证。场景是这样的,我们平时的工作中可能会对外提供一些接口,如果这些接口不做一些安全认证,什么人都可以访问,安全性就太低了,所以我们的目的就是增加一个接口的认证机制,防止别人通过接口攻击服务器。至于Shiro是什么,Http的Basic认证是什么,王子就简单介绍一下,详细内容请自行了解。Shiro是一个Java的安全框... 继续阅读 >
202103-30 Java如何发起http请求的实现(GET/POST) 前言在未来做项目中,一些功能模块可能会采用不同的语言进行编写。这就需要http请求进行模块的调用。那么下面,我将以Java为例,详细说明如何发起http请求。一、GET与POSTGET和POST是HTTP的两个常用方法。GET指从指定的服务器中获取数据POST指提交数据给指定的服务器处理1.GET方法使用GET方法,需要传递的参数被附加在URL地址后面一起发送到服务器。例如:http://121.41.111.94/submit?name=zxy&age=21特点:GET请求能够被缓... 继续阅读 >
202103-30 解决Java处理HTTP请求超时的问题 在发送POST或GET请求时,返回超时异常处理办法:捕获SocketTimeoutException|ConnectTimeoutException|ConnectionPoolTimeout异常三种异常说明:SocketTimeoutException:是Java包下抛出的异常,这定义了Socket读数据的超时时间,即从server获取响应数据须要等待的时间;当读取或者接收Socket超时会抛出SocketTimeoutException。ConnectTimeoutException:是Apache的HttpClient包抛出的超时异常,定义了通过网络与server建立... 继续阅读 >
202103-05 spring boot 常见http请求url参数获取方法 在定义一个Rest接口时通常会利用GET、POST、PUT、DELETE来实现数据的增删改查;这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性GET:一般用于查询数据,采用明文进行传输,一般用来获取一些无关用户信息的数据POST:一般用于插入数据PUT:一般用于数据更新DELETE:一般用于数据删除;一般都是进行逻辑删除(即:仅仅改变记录的状态,而并非真正的删除数据)1、@PathVaribale... 继续阅读 >
202102-26 浅谈SpringCloud feign的http请求组件优化方案 1描述如果我们直接使用SpringCloudFeign进行服务间调用的时候,http组件使用的是JDK的HttpURLConnection,每次请求都会新建一个连接,没有使用线程池复用。具体的可以从源码进行分析2源码分析我们在分析源码很难找到入口,不知道从何开始入手,我们在分析SpringCloudfeign的时候可用在配置文件下面我讲一下个人的思路。1首先我点击@EnableFeignClients看一下这个注解在哪个资源路径下如下图所示:2找到服务启动加载的配置文... 继续阅读 >
202012-17 graphql---go http请求使用详解 1.Graphql是什么?GraphQL是Facebook在2012年开发的,2015年开源,2016年下半年Facebook宣布可以在生产环境使用,而其内部早就已经广泛应用了,用于替代RESTAPI。facebook的解决方案和简单:用一个“聪明”的节点来进行复杂的查询,将数据按照客户端的要求传回去,后端根据GraphQL机制提供一个具有强大功能的接口,用以满足前端数据的个性化需求,既保证了多样性,又控制了接口数量。GraphQL并不是一门程序语言或者框架,它是... 继续阅读 >
202010-28 详解golang开发中http请求redirect的问题 这两天在开发项目的时候遇到了一个问题,请求了一个URL,它会302到另一个地址,本意上只是想检查这个URL是否会做3XX的redirect跳转,结果每次reqeust都会返回最后一跳的结果。后来就看了下源码,了解下请求跳转的机制实现代码看下实现的简单代码funcmain(){client:=&http.Client{}url:="http://www.qq.com"reqest,err:=http.NewRequest("GET",url,nil)iferr!=nil{panic(err)}response,_:=client.Do(reqes... 继续阅读 >
202010-20 如何劫持Java应用的HTTP请求 背景全链路追踪中,针对部分特殊的流量,希望将它引导到特定服务上(这个特定服务不在正常请求的链路上)——问题可以被抽象为解决进程间通信过程中目标进程的选择。进程间通信方式很多,本篇只关注Java进程间套接字通信下HTTP形式的请求劫持,引导特定流量到特定进程。解决方案可行的处理方案繁多。自顶向下从应用、框架、JVM、ContainerRuntime、SystemCall、网络协议栈等级别,均可着手解决。侵入性最强的操作就是要求所... 继续阅读 >
202010-10 SpringBoot拦截器如何获取http请求参数 1.1、获取http请求参数是一种刚需我想有的小伙伴肯定有过获取http请求的需要,比如想前置获取参数,统计请求数据做服务的接口签名校验敏感接口监控日志敏感接口防重复提交等等各式各样的场景,这时你就需要获取HTTP请求的参数或者请求body,一般思路有两种,一种就是自定义个AOP去拦截目标方法,第二种就是使用拦截器。整体比较来说,使用拦截器更灵活些,因为每个接口的请求参数定义不同,使用AOP很难细粒度的获取到变... 继续阅读 >
202009-28 解决Python发送Http请求时,中文乱码的问题 解决方法:先encode再quote。原理:msg.encode('utf-8')是解决中文乱码问题。quote():假如URL的name或者value值中有『&』、『%』或者『=』等符号,就会有问题。所以URL中的参数字符串也需要把『&=』等符号进行编码,quote()就是对参数字符串中的『&=%』等符号进行编码。例子:#-*-coding:UTF-8-*-#python2.7fromurllibimportquoteimportrequestsdefhttpGet(sUrl):header={}try:response=requests.get(sUrl,... 继续阅读 >
202009-28 php如何获取Http请求 php获取Http请求的方法$_SERVER介绍$_SERVER是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(scriptlocations)等等信息的数组。获取Http请求的方法示例$req_method=$_SERVER['REQUEST_METHOD'];echo$req_method;实例补充:socket方式使用套接字建立连接,拼接HTTP报文发送数据进行HTTP请求。一个GET方式的例子:<?php$fp=fsockopen("www.example.com",80,$errno,$errstr,30);if(!$fp){echo"$er... 继续阅读 >
202009-24 Spring+Http请求+HttpClient实现传参 一、HttpClient简介HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的javanet包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP... 继续阅读 >