refactor: 优化RestTemplate在低版本引起的一个I/O异常

详细可参考:https://github.com/spring-projects/spring-framework/issues/21321
This commit is contained in:
felord.cn
2021-02-24 17:59:42 +08:00
committed by felord.cn
parent dd4a8ed565
commit ff1e0fd473
3 changed files with 9 additions and 2 deletions

View File

@@ -48,4 +48,9 @@ public class WechatV2Client {
public WechatMetaBean getWechatMetaBean() { public WechatMetaBean getWechatMetaBean() {
return wechatMetaBean; return wechatMetaBean;
} }
public static void main(String[] args) {
System.out.println("hello 2021");
}
} }

View File

@@ -289,8 +289,8 @@ public class SignatureProvider {
cipher.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey()); cipher.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey());
byte[] data = message.getBytes(StandardCharsets.UTF_8); byte[] data = message.getBytes(StandardCharsets.UTF_8);
byte[] cipherdata = cipher.doFinal(data); byte[] cipherData = cipher.doFinal(data);
return Base64Utils.encodeToString(cipherdata); return Base64Utils.encodeToString(cipherData);
} catch (Exception e) { } catch (Exception e) {
throw new PayException(e); throw new PayException(e);

View File

@@ -26,6 +26,7 @@ import cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter; import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@@ -336,6 +337,7 @@ public class WechatPayClient {
*/ */
private void applyDefaultRestTemplate() { private void applyDefaultRestTemplate() {
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
DefaultResponseErrorHandler errorHandler = new WechatPayResponseErrorHandler(); DefaultResponseErrorHandler errorHandler = new WechatPayResponseErrorHandler();
restTemplate.setErrorHandler(errorHandler); restTemplate.setErrorHandler(errorHandler);
List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters(); List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();