Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jaxb Base64二进制编码/解码_Java_Xsd_Jaxb - Fatal编程技术网

Java jaxb Base64二进制编码/解码

Java jaxb Base64二进制编码/解码,java,xsd,jaxb,Java,Xsd,Jaxb,我需要在服务响应中包含mimessage对象。 所以基本上我决定使用Base64二进制类型。 信息由以下代码编写: //message is a MimeMessage type ByteArrayOutputStream baos = new ByteArrayOutputStream(); message.writeTo(baos); byte[] bytes = baos.toByteArray(); content.setMessageContent(bytes); 在模式中,它表示为

我需要在服务响应中包含mimessage对象。 所以基本上我决定使用Base64二进制类型。 信息由以下代码编写:

//message is a MimeMessage type
ByteArrayOutputStream baos = new ByteArrayOutputStream();
message.writeTo(baos);
byte[] bytes = baos.toByteArray();
content.setMessageContent(bytes);
在模式中,它表示为:

  <xs:simpleType name="MessageContent">
    <xs:restriction base="xs:base64Binary">
      <xs:whiteSpace value="collapse" fixed="true"/>
    </xs:restriction>   </xs:simpleType>

我得到的响应中的字符编码不正确。例如,将%3D转换为=3D,但应仅为=

我认为这可能与编码有关,但marhaller和unmarshaller都使用UTF-8作为默认值

任何提示都会有帮助, 谢谢
马瑞克。

我很快就在我这边试了一下,效果很好;还有一些你没有发布的东西可能会导致你的问题。我已经使用NetBeans 7.1来生成类(所有都是现成的);尝试一下,看看你是否也能得到同样的结果。那么请让我知道

XSD:

结果是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Message xmlns="http://tempuri.org/XMLSchema.xsd">
    <content>RTE=</content>
</Message>

RTE=

谢谢您的回答,我将提取更多代码并更新我的帖子。
JAXBContext jc = JAXBContext.newInstance(("org.tempuri.xmlschema"));
Marshaller m = jc.createMarshaller();   
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
ObjectFactory o = new ObjectFactory();
Message msg = o.createMessage();
byte[] data = new byte[] {0x45, 0x31};
msg.setContent(data);
m.marshal(msg, System.out);
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Message xmlns="http://tempuri.org/XMLSchema.xsd">
    <content>RTE=</content>
</Message>