parent
							
								
									f86e569c03
								
							
						
					
					
						commit
						4d6693aca2
					
				| @ -0,0 +1,42 @@ | ||||
| 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 List<HttpMessageReader<?>> build() { | ||||
|         String maxInMemorySizeValueStr = EnvironmentKeys.MAX_IN_MEMORY_SIZE.getValue(); | ||||
|         int maxInMemorySizeValue = Integer.parseInt(maxInMemorySizeValueStr); | ||||
|         List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().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; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| package com.gitee.sop.storyweb.controller.param; | ||||
| 
 | ||||
| import lombok.Data; | ||||
| 
 | ||||
| /** | ||||
|  * @author tanghc | ||||
|  */ | ||||
| @Data | ||||
| public class LargeTextParam { | ||||
|     private String content; | ||||
| } | ||||
									
										
											File diff suppressed because one or more lines are too long
										
									
								
							
						| @ -0,0 +1,65 @@ | ||||
| package com.gitee.sop.test; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.gitee.sop.test.alipay.AlipaySignature; | ||||
| import org.apache.commons.io.FileUtils; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Date; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  * 模仿支付宝客户端请求接口 | ||||
|  */ | ||||
| public class LargeBodyPostTest extends TestBase { | ||||
| 
 | ||||
|     String url = "http://localhost:8081"; | ||||
|     String appId = "2019032617262200001"; | ||||
|     // 平台提供的私钥
 | ||||
|     String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ="; | ||||
| 
 | ||||
|     // 测试大容量报文
 | ||||
|     @Test | ||||
|     public void testGet() throws Exception { | ||||
| 
 | ||||
|         // 公共请求参数
 | ||||
|         Map<String, String> params = new HashMap<String, String>(); | ||||
|         params.put("app_id", appId); | ||||
|         params.put("method", "story.get.large"); | ||||
|         params.put("format", "json"); | ||||
|         params.put("charset", "utf-8"); | ||||
|         params.put("sign_type", "RSA2"); | ||||
|         params.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | ||||
|         params.put("version", "1.0"); | ||||
| 
 | ||||
|         // 业务参数
 | ||||
|         Map<String, String> bizContent = new HashMap<>(); | ||||
|         bizContent.put("id", "1"); | ||||
|         String root = System.getProperty("user.dir"); | ||||
|         File file = new File(root + "/src/main/resources/large_data.txt"); | ||||
|         String fileContent = FileUtils.readFileToString(file, StandardCharsets.UTF_8); | ||||
|         bizContent.put("content", fileContent); | ||||
| 
 | ||||
|         params.put("biz_content", JSON.toJSONString(bizContent)); | ||||
|         String content = AlipaySignature.getSignContent(params); | ||||
|         String sign = AlipaySignature.rsa256Sign(content, privateKey, "utf-8"); | ||||
|         params.put("sign", sign); | ||||
| 
 | ||||
|         System.out.println("----------- 请求信息 -----------"); | ||||
|         System.out.println("请求参数:" + buildParamQuery(params)); | ||||
|         System.out.println("商户秘钥:" + privateKey); | ||||
|         System.out.println("待签名内容:" + content); | ||||
|         System.out.println("签名(sign):" + sign); | ||||
|         System.out.println("URL参数:" + buildUrlQuery(params)); | ||||
| 
 | ||||
|         System.out.println("----------- 返回结果 -----------"); | ||||
|         String responseData = post(url, params);// 发送请求
 | ||||
|         System.out.println(responseData); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue