在Java中将字符串转换为JMS字节消息
我正在尝试将字符串转换为JMS字节消息。有什么好办法吗 我需要这样做,因为我有一个方法,它接受一个被解密的字符串,我需要将它转换成ByteMessage来解密消息 谢谢您可以使用在Java中将字符串转换为JMS字节消息,java,Java,我正在尝试将字符串转换为JMS字节消息。有什么好办法吗 我需要这样做,因为我有一个方法,它接受一个被解密的字符串,我需要将它转换成ByteMessage来解密消息 谢谢您可以使用 byte[] String#getBytes() 要从字符串中获取字节数组并将其写入BytemMessage,可以使用 byte[] String#getBytes() byte[] bArray = "foo".getBytes("UTF-8"); BytesMessage msg = session.cre
byte[] String#getBytes()
要从字符串中获取字节数组并将其写入BytemMessage,可以使用
byte[] String#getBytes()
byte[] bArray = "foo".getBytes("UTF-8");
BytesMessage msg = session.createBytesMessage(); // throws JMSException
msg.writeBytes(bArray);
从字符串中获取字节数组并将其写入字节消息
byte[] bArray = "foo".getBytes("UTF-8");
BytesMessage msg = session.createBytesMessage(); // throws JMSException
msg.writeBytes(bArray);
当然,正如Arcadien所说,您需要在适当的环境中执行代码,以便从中获取javax.jms.Session对象
当然,正如Arcadien所说,您需要在适当的环境中执行代码,以便从中获取javax.jms.Session对象。有点晚,
但迟做总比不做好
@Carlo的答案基本上是正确的,
但如果使用getBytes,则必须捕获异常
使用字符串参数
下面是getBytes调用的一个变体,它不会引发异常:
final byte[] byteArray = "blammy".getBytes(StandardCharsets.UTF_8);
final BytesMessage bytesMessage = session.createBytesMessage();
bytesMessage.writeBytes(byteArray);
StandardCharsets类定义了保证在Java平台的每个实现上都可用的字符集。有点晚了,
但迟做总比不做好
@Carlo的答案基本上是正确的,
但如果使用getBytes,则必须捕获异常
使用字符串参数
下面是getBytes调用的一个变体,它不会引发异常:
final byte[] byteArray = "blammy".getBytes(StandardCharsets.UTF_8);
final BytesMessage bytesMessage = session.createBytesMessage();
bytesMessage.writeBytes(byteArray);
StandardCharsets类定义了保证在Java平台的每个实现上都可用的字符集。您想确切知道什么?如何创建BytesMessage?您尝试过String.getBytesCharset吗?我想获取一个我已经拥有的字符串,并将其转换为BytesMessage。我对ByteMessage不太熟悉,因为我正在对现有代码进行更改,所以这样做是错误的吗?是的,我已经这样做了,我可以将字符串转换成bytes[]数组,但是有没有办法将其转换成BytesMessage?如果目标是加密消息,为什么不使用JMS提供程序的内置功能呢?您想确切知道什么?如何创建BytesMessage?您尝试过String.getBytesCharset吗?我想获取一个我已经拥有的字符串,并将其转换为BytesMessage。我对ByteMessage不太熟悉,因为我正在对现有代码进行更改,所以这样做是错误的吗?是的,我已经这样做了,我可以将字符串转换成bytes[]数组,但是有没有办法将其转换成BytesMessage?如果目标是加密消息,为什么不使用JMS提供程序的内置功能呢?BytesMessage是一个接口,而不是一个类。您必须在JMS中找到工厂或其实现才能使用它;虽然我对它的了解还不足以给出一个解决方案。BytesMessage是一个接口,而不是一个类。您必须在JMS中找到工厂或其实现才能使用它;虽然我知道的还不足以给你答案。