在从 msxml 服务接收实际 xml 之前,这个 "socket heading"(字节,字符)是什么?
What is this "socket heading" (bytes,chars) before receiving the actual xml from an msxml service?
我正在使用 java jaxb 通过 socket unmarshal xml 请求,在实际 xml
之前
<?xml version="1.0"....
我收到这些字节
00 00 01 F9 EF BB BF
它们是什么?,xml 的大小?,session id?...
发件人正在使用 msxml4
执行对我的服务的请求。
此外,我可以看到发件人期望这种类型的 header(如果我直接发送 xml 响应,它会中继前 7 个字节)。
所以当我理解了这些字节是什么后,有没有 "normal" 任何使用 jaxb
的方法可以用来添加这个 header 或者我需要这样做手动。
感谢您的回复
这是一个 物料清单 header。
前4个字节表示文件大小00 00 01 F9 = 0 + 0 + 256 + 249 = 505(包括表示UTF-8(EF BB BF)的3个字节。因此xml长度将成为 502.
如何使用 Jaxb 视图处理此流:
Byte order mark screws up file reading in Java
why org.apache.xerces.parsers.SAXParser does not skip BOM in utf8 encoded xml?
但是,我更喜欢逐字节处理流,将其读入 StringBuffer(因为我还需要它以字符串格式进行记录)
我的读取字节到字节的解决方案是为了等待“<”字符,因此是 xml 消息中的第一个字符。
要在发送响应之前添加 BOM 标题,我使用了类似的方法:
import java.nio.ByteBuffer;
public byte[] getBOMMessage(int xmlLenght) {
byte[] arr = new byte[7];
ByteBuffer buf = ByteBuffer.wrap(arr);
buf.putInt(xmlLenght+3);
arr[4]=(byte)0xef;
arr[5]=(byte)0xbb;
arr[6]=(byte)0xbf;
return arr;
}
我正在使用 java jaxb 通过 socket unmarshal xml 请求,在实际 xml
之前<?xml version="1.0"....
我收到这些字节
00 00 01 F9 EF BB BF
它们是什么?,xml 的大小?,session id?...
发件人正在使用 msxml4
执行对我的服务的请求。
此外,我可以看到发件人期望这种类型的 header(如果我直接发送 xml 响应,它会中继前 7 个字节)。
所以当我理解了这些字节是什么后,有没有 "normal" 任何使用 jaxb
的方法可以用来添加这个 header 或者我需要这样做手动。
感谢您的回复
这是一个 物料清单 header。
前4个字节表示文件大小00 00 01 F9 = 0 + 0 + 256 + 249 = 505(包括表示UTF-8(EF BB BF)的3个字节。因此xml长度将成为 502.
如何使用 Jaxb 视图处理此流:
Byte order mark screws up file reading in Java
why org.apache.xerces.parsers.SAXParser does not skip BOM in utf8 encoded xml?
但是,我更喜欢逐字节处理流,将其读入 StringBuffer(因为我还需要它以字符串格式进行记录)
我的读取字节到字节的解决方案是为了等待“<”字符,因此是 xml 消息中的第一个字符。
要在发送响应之前添加 BOM 标题,我使用了类似的方法:
import java.nio.ByteBuffer;
public byte[] getBOMMessage(int xmlLenght) {
byte[] arr = new byte[7];
ByteBuffer buf = ByteBuffer.wrap(arr);
buf.putInt(xmlLenght+3);
arr[4]=(byte)0xef;
arr[5]=(byte)0xbb;
arr[6]=(byte)0xbf;
return arr;
}