You've already forked FrameTour-BE
配置、记录请求、支付
This commit is contained in:
63
src/main/java/com/ycwl/basic/aspectj/HttpSaver.java
Normal file
63
src/main/java/com/ycwl/basic/aspectj/HttpSaver.java
Normal file
@ -0,0 +1,63 @@
|
||||
package com.ycwl.basic.aspectj;
|
||||
|
||||
import com.ycwl.basic.annotation.RequestToFile;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.After;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.File;
|
||||
import java.util.Enumeration;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Aspect
|
||||
@Component
|
||||
@Slf4j
|
||||
public class HttpSaver {
|
||||
|
||||
@Pointcut("@annotation(com.ycwl.basic.annotation.RequestToFile)")
|
||||
public void requestToFilePointCut() {
|
||||
}
|
||||
|
||||
@After("requestToFilePointCut()")
|
||||
public void requestToFile() throws Throwable {
|
||||
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||
if (attributes == null) {
|
||||
return;
|
||||
}
|
||||
HttpServletRequest request = attributes.getRequest();
|
||||
StringBuilder rawReq = new StringBuilder();
|
||||
rawReq.append(request.getMethod()).append(" ").append(request.getRequestURL());
|
||||
String queryString = request.getQueryString();
|
||||
if (queryString != null) {
|
||||
rawReq.append("?").append(queryString);
|
||||
}
|
||||
rawReq.append("\r\n");
|
||||
Enumeration<String> headerNames = request.getHeaderNames();
|
||||
while (headerNames.hasMoreElements()) {
|
||||
String headerName = headerNames.nextElement();
|
||||
rawReq.append(headerName).append(": ").append(request.getHeader(headerName)).append("\r\n");
|
||||
}
|
||||
rawReq.append("\r\n");
|
||||
// 获取body
|
||||
rawReq.append(request.getReader().lines().collect(Collectors.joining("\r\n")));
|
||||
rawReq.append("\r\n");
|
||||
// 写入文件
|
||||
File file = new File("./request/"+System.currentTimeMillis()+".http");
|
||||
if (!file.getParentFile().exists()) {
|
||||
file.getParentFile().mkdirs();
|
||||
}
|
||||
if (!file.exists()) {
|
||||
file.createNewFile();
|
||||
}
|
||||
try (java.io.FileWriter writer = new java.io.FileWriter(file, true)) {
|
||||
writer.write(rawReq.toString());
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user