mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-11-13 17:56:09 +08:00
修复请求体超过256KB无法请求问题
This commit is contained in:
@@ -3,6 +3,7 @@ package com.gitee.sop.gatewaycommon.gateway;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||
import com.gitee.sop.gatewaycommon.gateway.codec.MessageReaderFactory;
|
||||
import com.gitee.sop.gatewaycommon.gateway.common.FileUploadHttpServletRequest;
|
||||
import com.gitee.sop.gatewaycommon.gateway.common.RequestContentDataExtractor;
|
||||
import com.gitee.sop.gatewaycommon.gateway.common.SopServerHttpRequestDecorator;
|
||||
@@ -48,11 +49,7 @@ public class ServerWebExchangeUtil {
|
||||
|
||||
private static final FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
|
||||
|
||||
private static final List<HttpMessageReader<?>> messageReaders;
|
||||
|
||||
static {
|
||||
messageReaders = HandlerStrategies.withDefaults().messageReaders();
|
||||
}
|
||||
private static final List<HttpMessageReader<?>> messageReaders = MessageReaderFactory.build();
|
||||
|
||||
/**
|
||||
* 重定向
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.gitee.sop.gatewaycommon.gateway.codec;
|
||||
|
||||
import com.gitee.sop.gatewaycommon.manager.EnvironmentKeys;
|
||||
import org.springframework.core.codec.AbstractDataBufferDecoder;
|
||||
import org.springframework.http.codec.HttpMessageReader;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.web.reactive.function.server.HandlerStrategies;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
public class MessageReaderFactory {
|
||||
|
||||
public static final String METHOD_SET_MAX_IN_MEMORY_SIZE = "setMaxInMemorySize";
|
||||
public static final String METHOD_GET_DECODER = "getDecoder";
|
||||
public static final int DEFAULT_SIZE = 256 * 1024;
|
||||
|
||||
public static List<HttpMessageReader<?>> build() {
|
||||
String maxInMemorySizeValueStr = EnvironmentKeys.MAX_IN_MEMORY_SIZE.getValue();
|
||||
int maxInMemorySizeValue = Integer.parseInt(maxInMemorySizeValueStr);
|
||||
List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().messageReaders();
|
||||
if (DEFAULT_SIZE == maxInMemorySizeValue) {
|
||||
return messageReaders;
|
||||
}
|
||||
// 设置POST缓存大小
|
||||
for (HttpMessageReader<?> httpMessageReader : messageReaders) {
|
||||
Method[] methods = ReflectionUtils.getDeclaredMethods(httpMessageReader.getClass());
|
||||
for (Method method : methods) {
|
||||
String methodName = method.getName();
|
||||
if (METHOD_SET_MAX_IN_MEMORY_SIZE.equals(methodName)) {
|
||||
ReflectionUtils.invokeMethod(method, httpMessageReader, maxInMemorySizeValue);
|
||||
} else if (METHOD_GET_DECODER.equals(methodName)) {
|
||||
Object decoder = ReflectionUtils.invokeMethod(method, httpMessageReader);
|
||||
if (decoder instanceof AbstractDataBufferDecoder) {
|
||||
AbstractDataBufferDecoder<?> bufferDecoder = (AbstractDataBufferDecoder<?>) decoder;
|
||||
bufferDecoder.setMaxInMemorySize(maxInMemorySizeValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return messageReaders;
|
||||
}
|
||||
}
|
||||
@@ -39,9 +39,16 @@ public enum EnvironmentKeys {
|
||||
/**
|
||||
* 预发布域名
|
||||
*/
|
||||
PRE_DOMAIN("pre.domain");
|
||||
PRE_DOMAIN("pre.domain"),
|
||||
|
||||
private String key;
|
||||
/**
|
||||
* post请求body缓存大小
|
||||
*/
|
||||
MAX_IN_MEMORY_SIZE("spring.codec.max-in-memory-size", "262144")
|
||||
|
||||
;
|
||||
|
||||
private final String key;
|
||||
private String defaultValue;
|
||||
|
||||
public String getKey() {
|
||||
|
||||
Reference in New Issue
Block a user