我正在尝试将 TIFF 图像发送到以下列方式接受图像的 Web 服务(这当然只是更大 WSDL 的片段):
<complexType name="ArrayOfImage">
<sequence>
<element maxOccurs="unbounded" name="image" type="xsd:hexBinary"/>
</sequence>
</complexType>
数据通过以下方式加载,其中 enclosureType 由 JAX-WS RI ( JAX-WS RI 2.1.7-b01-
) 生成:
final List<byte[]> imgData = new LinkedList<byte[]>();
for (final Iterator<File> iterator = files.iterator(); iterator.hasNext(); ) {
imgData.add(Files.toByteArray(iterator.next())); //Files class from Guava release 13
}
enclosingType.setArrayOfImage(imgData);
将图像发送到远程 Web 服务时,我收到以下样式的错误:
javax.xml.ws.soap.SOAPFaultException: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x0) was found in the element content of the document. Message being parsed: HEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXHEXH</ns4:image></ns4:arrayOfImage><ns4:otherField></ns4:otherField></ns4:enclosingType></ns5:enclosingTypes></ns5:outerEnclosingType></S:Body></S:Envelope>
我想 TIFF 完全有可能包含 UnicodeNULL
字节,我认为这是根据这个 answer发送的内容。
据我了解,我正确使用了生成的 API,因为 hexBinary 不需要 Base64 编码的数据。是否需要做其他事情才能使图像正确发送?