首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Spring集成TCP网关中控制字符编码

如何在Spring集成TCP网关中控制字符编码
EN

Stack Overflow用户
提问于 2016-01-22 15:15:24
回答 2查看 1.1K关注 0票数 1

我已经使用在线提供的文档和示例设置了Spring集成网关。我发送的XML消息是ISO-8859-1编码的,但是接收方告诉我消息是以与ISO-8859-1不同的编码发送给他们的。

我的配置如下所示:

代码语言:javascript
运行
AI代码解释
复制
    <!-- Spring integration begins -->
<beans:bean id="javaDeserializer"
    class="org.springframework.integration.ip.tcp.serializer.ByteArrayRawSerializer" />

<int:gateway id="gw"
    service-interface="com.pawsec.alarmcenter.model.SOSAccessV4.SimpleGateway"
    default-request-channel="input"/>

<int-ip:tcp-connection-factory id="cfClient"
    type="client"
    host="${rapid.alarm.ipaddress}"
    port="${rapid.alarm.port}"
    deserializer="javaDeserializer"
    single-use="true"
    so-timeout="10000"/>

<int:channel id="input" />

<int-ip:tcp-outbound-gateway id="outGateway"
    request-channel="input"
    reply-channel="clientBytes2StringChannel"
    connection-factory="cfClient"
    request-timeout="10000"/>

<int:channel id="clientBytes2StringChannel"/>

<int:object-to-string-transformer id="clientBytes2String"
    input-channel="clientBytes2StringChannel" />

 <!-- Spring integration ends -->

我需要知道如何控制传出流的字符编码。还有--有没有办法我可以自己检查传出的消息,而不必打电话给接收方并让他检查?

有谁能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2016-01-22 16:37:06

TcpNetConnection在发送之前使用TcpMessageMapper将消息转换为byte[]

代码语言:javascript
运行
AI代码解释
复制
Object object = this.getMapper().fromMessage(message);

它的代码看起来像(当然是默认的):

代码语言:javascript
运行
AI代码解释
复制
bytes = ((String) payload).getBytes(this.charset);

其中,它类似于:

代码语言:javascript
运行
AI代码解释
复制
private volatile String charset = "UTF-8";

因此,您应该为mapper提供所需的charset,以便将ISO-8859-1 XML转换为字节。

Re.

自己检查传出消息

您可以使用一些TCP跟踪工具,如wire Wireshark来代理和拦截流量。

票数 1
EN

Stack Overflow用户

发布于 2016-01-25 16:08:39

我通过使用如下的ISO-8859-1映射器配置客户端工厂解决了最初的问题:

代码语言:javascript
运行
AI代码解释
复制
        @Bean
    public AbstractClientConnectionFactory clientCF() {
        TcpNetClientConnectionFactory clientConnectionFactory = new TcpNetClientConnectionFactory(HOST, PORT);
        TcpMessageMapper tcpMessageMapper = new TcpMessageMapper();
        logger.debug("Setting deserializer");
        clientConnectionFactory.setDeserializer(new ByteArrayRawSerializer());
        tcpMessageMapper.setCharset("ISO-8859-1");
        logger.debug("setting mapper!");
        clientConnectionFactory.setMapper(tcpMessageMapper);
        return clientConnectionFactory;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34949964

复制
相关文章
Python 中有关中文编码解码小记
3、python 头顶部设置的编码格式 # _*_ coding: utf-8 _*_  不会影响默认python 的默认编码格式
py3study
2020/01/10
5760
ASCII控制字符
国际标准ISO/IEC 646 二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ␁ 标题开始 0000 0010 2 02 STX ␂ 本文开始 0000 0011 3 03 ETX ␃ 本文结束 0000 0100 4 04 EOT ␄ 传输结束 0000 0101 5 05 ENQ ␅ 请求 0000 0110 6 06 ACK ␆ 确认回应 0000 0111 7 07 BEL ␇ 响铃
红目香薰
2022/11/29
5500
计网 - tcp和udp(一)
传输数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免的增加了许多开销,确认、流量控制、计时器以及连接管理等。
ppxai
2020/09/23
6580
计网 - tcp和udp(一)
FPGA千兆网TCP通信分析
首先通过上面的简单分析,我们应该很清楚一件事:TCP协议很复杂,光握手过程就需要“三次握手、四次挥手”的复杂过程,不是特别适合FPGA的纯逻辑实现,因为用FPGA实现以太网通信的主要目的就是进行低延时的传输数据,而一旦设计规模达到一定量级,FPGA实现通信的优势便不复存在,转而体现出“性价比”低的劣势。
碎碎思
2020/06/30
1.4K0
Spring集成MyBatis
在 Dao 接口的包中创建 MyBatis 的映射文件 UserMapper,命名与接口名相同,本例为UserMapper.xml。mapper 中的 namespace 取值也为 Dao 接口的全限定性名。
全栈程序员站长
2022/09/02
5960
Shiro集成Spring
1、Shiro集成Spring,使用maven进行jar包的依赖与管理,pom.xml的配置文件,如下所示:
别先生
2020/09/01
1.3K0
Shiro集成Spring
Spring集成MyBatis
如果觉得Hibernate不够灵活,可以尝试用Mybatis。相比于Hibernate,Mybatis则显得更加轻量、更加灵活,对于我这种不喜欢被束缚的人,使用Mybatis更加顺手、舒心一些。 My
古时的风筝
2018/01/08
1.5K0
Spring集成MyBatis
Shiro 集成 Spring
本章我们来学习 Shiro 集成 Spring,即在 Web 环境下如何使用 Shiro 来进行权限控制。
一份执着✘
2018/08/27
7230
Spring Boot 集成 Spring Security
Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC(Inversion of Control 控制反转),DI(Dependency Injection 依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
阿宝哥
2019/11/07
3.1K0
如何在ownCloud/NextCloud/丰盘ECM等免费企业网盘集成在线Office?
伴随着企业内部员工生产和流通的文档越来越多,企业管理层迫切需要引入一套可以私有部署在企业内网的文档管理系统来将这些文档集中管理起来,一方面可以更好的管控权限,另外也是为了更好的在不同项目、新老员工之间进行共享以提高生产力。
打杂的小牛
2022/08/23
3.3K0
如何在ownCloud/NextCloud/丰盘ECM等免费企业网盘集成在线Office?
spring集成kafka
一、添加依赖项 compile 'org.springframework.kafka:spring-kafka:1.2.2.RELEASE' 二、发消息(生产者) 2.1 xml配置 1 <?xml
菩提树下的杨过
2018/01/18
7770
Spring 集成Quartz
在使用jdk的timer时发现无法在指定的日期进行执行任务。这便引入一个优秀的开源任务调度框架“quartz”。这里使用的是quartz-1.8.6版本。Quart的官网:http://www.quartz-scheduler.org/;spring 3.0版本无法集成quartz 2.x及其后续版本。
HUC思梦
2020/09/03
7780
Spring 集成Quartz
Spring集成Junit
1. 原始Junit测试Spring的问题 在测试类中,每个测试方法都有以下两行代码: ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); 这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。 2. 上述问题解决思路 让SpringJunit
兮动人
2021/11/16
5230
计网 - TCP 实战:如何进行 TCP 抓包调试?
Wireshark 是世界上应用最广泛的网络协议分析器,它让我们在微观层面上看到整个网络正在发生的事情。
小小工匠
2021/08/17
7120
计网 - TCP 实战:如何进行 TCP 抓包调试?
【Java Spring Cloud 实战之路】- 使用Nacos和网关中心的创建
Nacos可以用来发现、配置和管理微服务。提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。
程序员小高
2020/06/09
8920
Spring Boot集成Spring Data Jpa
之前写过spring data jpa 入门,Spring Boot 使用Jpa,很简单,也很方便,这里简单介绍一下。
用户2146693
2019/08/08
2K0
Spring Boot集成Spring Data Jpa
计网 - TCP 协议 VS UDP 协议
计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?中提到了T CP 和 UDP 是今天应用最广泛的传输层协议,拥有最核心的垄断地位。
小小工匠
2021/08/17
5730
计网 - TCP 协议 VS UDP 协议
6.1 Spring Boot集成mybatis6.1 Spring Boot集成mybatis
在SpringBoot集成MyBatis时,我们将去掉和Mybatis配置相关的xml文件配置方式,用注解和属性配置来代替这些繁杂的配置。
一个会写诗的程序员
2018/08/20
1.1K0
6.1 Spring Boot集成mybatis6.1 Spring Boot集成mybatis
redis和spring集成
redis和spring框架的整合 我这里创建的是maven工程,通过maven锁定版本号,管理jar包之间的依赖 1.在pom文件中,引入spring和redis的jar包的坐标: <properties> <junit.version>4.12</junit.version> <spring.version>4.2.4.RELEASE</spring.version> <jedis.version>2.7.2</jedis.version>
用户2146856
2018/05/18
1.1K0
Spring Boot日志集成
Spring Boot日志框架 Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制台或者文件中。 spring-boot-starter启动器包含spring-boot-starter-logging启动器并集成了slf4j日志抽象及Logback日志框架。 属性配置日志 Spring
Java技术栈
2018/03/30
1.2K0
Spring Boot日志集成

相似问题

如何在春季集成tcp网关中实现粘性会话?

20

Spring集成TCP

14

春季集成tcp网关中的应答超时

11

Spring集成Tcp项目

17

未知编码Node.js网/TCP

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文