Comments (11)
#42 中提到的使用有没有效果?
this.restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
我需要实验一下
from wechatpay-apache-httpclient.
#42 中提到的使用有没有效果?
this.restTemplate.getMessageConverters() .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
我需要实验一下
使用过, 但是没有效果, 集成的方式和您的代码是一样的。我debug跟踪了流程, 主要原因不是在于转换器的问题。在spring
HttpComponentsClientHttpRequest#executeInternal 这个方法是直接new了一个httpClient的HttpEntity。我不知道是为什么没有将Content-Type的属性复制进去。所以在解析的时候使用了默认的ISO-8859-1进行解码
from wechatpay-apache-httpclient.
看了下stackoverflow上答案的代码,试试先移除原有的StringHttpMessageConverter
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
converters.removeIf(httpMessageConverter -> httpMessageConverter instanceof StringHttpMessageConverter);
converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
from wechatpay-apache-httpclient.
看了下stackoverflow上答案的代码,试试先移除原有的StringHttpMessageConverter
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters(); converters.removeIf(httpMessageConverter -> httpMessageConverter instanceof StringHttpMessageConverter); converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
依然不行, 解析出来之后, 中文依旧乱码。我暂时先直接使用HttpClient来请求是没问题的, 集成RestTemplate就会乱码。
from wechatpay-apache-httpclient.
方便把整个工程打包发到我邮箱一下?注意去掉敏感信息,比如商户私钥
from wechatpay-apache-httpclient.
from wechatpay-apache-httpclient.
可以试试在请求之前指定编码格式,
HttpHeaders headers = request.getHeaders(); ContentType contentType = ContentType.APPLICATION_JSON.withCharset(StandardCharsets.UTF_8); headers.add("Content-Type", contentType.toString());
因为默认EntityUtils.toString(final HttpEntity entity) 里的编码会从contentType里取。可以试试还未验证
from wechatpay-apache-httpclient.
from wechatpay-apache-httpclient.
是应答的数据出现乱码?
from wechatpay-apache-httpclient.
是应答的数据出现乱码?
不是, 就是单纯的请求过去就出现了乱码. "description":"?????(??)-Indosat???-5KIDR??"
因为最终还是通过WechatPay2Credentials.buildMessage来进行输出解码的呀!
导致了
因为新版APIV3 description是必填的 所以这个问题我必须要解决,但是在我的代码中我不想去覆写这个类来进行注入, 所以我暂时还是使用原生的HttpClient配合连接池使用。 但是坏处是无法做到整体资源进行整合托管, 例如异常处理等事情。所以希望作者能够提供一个好的解决方法。谢谢啦
from wechatpay-apache-httpclient.
0.2.2,使用以下的测试代码ok。乱码应该是设置StringHttpMessageConverter
可以解决的。
RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(httpClient));
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
converters.removeIf(httpMessageConverter -> httpMessageConverter instanceof StringHttpMessageConverter);
converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode rootNode = objectMapper.createObjectNode();
rootNode.put("mchid","1900009191")
.put("appid", "wxdace645e0bc2c424")
.put("description", "Image形象店-深圳腾大-QQ公仔")
.put("notify_url", "https://www.weixin.qq.com/wxpay/pay.php")
.put("out_trade_no", "1217752501201407033233368018");
rootNode.putObject("amount")
.put("total", 1);
rootNode.putObject("payer")
.put("openid", "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o");
objectMapper.writeValue(bos, rootNode);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
org.springframework.http.HttpEntity<String> request =
new org.springframework.http.HttpEntity<>(bos.toString(), headers);
ResponseEntity<String> response = restTemplate.postForEntity(
"https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi", request, String.class);
assertEquals(200, response.getStatusCode());
from wechatpay-apache-httpclient.
Related Issues (20)
- 仅签名不验签 HOT 1
- 日志打印body内容乱码 HOT 1
- 回调验签失败 HOT 2
- AutoUpdateCertificatesVerifier弃用后有其他替代方案吗 HOT 1
- No 0.4.9 in Maven Central HOT 1
- Start
- 是否提供一个Spring Boot 3.0的支持版本? HOT 4
- 【Help】使用demo中的例子上传图片返回400 badrequest HOT 4
- 支付回调验签报错 HOT 2
- 使用时Verifier没有办法初始化在springboot中 HOT 2
- 吊毛写的什么够吧文档
- 下单按照文档的格式写,遇到报错:Http头Authorization值格式错误,请参考《微信支付商户REST API签名规则》 HOT 2
- 是否考虑做个wechatpay-apache-httpasyncclient或支持异步通讯
- 视频上传问题 HOT 2
- jackson版本过低不兼容wechatpay-apache-httpclient0.4.9 HOT 1
- NotificationHandlerTest.java示例可能不够清晰 HOT 1
- prepay 提交 PrepayRequest 提示sub_mch_id HOT 1
- 证书自动更新里面写死的证书接口地址,内网服务器无法访问 HOT 1
- Caused by: java.util.concurrent.CancellationException: Operation aborted HOT 1
- 奇怪bug复现 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wechatpay-apache-httpclient.