Module  java.xml.ws
软件包  javax.xml.soap

Class AttachmentPart



  • public abstract class AttachmentPart
    extends Object
    一个附件到一个SOAPMessage对象。 SOAPMessage对象可以包含零个,一个或多个AttachmentPart对象。 每个AttachmentPart对象由两部分组成,特定于应用程序的内容和关联的MIME头。 MIME标头由可用于标识和描述内容的名称/值对组成。

    一个AttachmentPart对象必须符合某些标准。

    1. 它必须符合MIME [RFC2045] standards
    2. 它必须包含内容
    3. 标题部分必须包括以下标题:
      • Content-Type
        此标头标识AttachmentPart对象的内容中的数据类型,并且必须符合[RFC2045]。 以下是Content-Type标题的示例:
          Content-Type:  application/xml 
        以下代码行ap是一个AttachmentPart对象,设置前一示例中显示的标题。
          ap.setMimeHeader("Content-Type", "application/xml"); 

    AttachmentPart对象的内容部分没有限制。 内容可以是从简单的纯文本对象到复杂的XML文档或图像文件的任何内容。

    使用方法SOAPMessage.createAttachmentPart创建一个AttachmentPart对象。 设置其MIME标头后, AttachmentPart对象将添加到使用方法SOAPMessage.addAttachmentPart创建的消息。

    下面的代码片段,其中mSOAPMessage对象和contentStringlString ,创建的实例AttachmentPart ,设置AttachmentPart与一些内容和报头信息对象,并将该AttachmentPart对象到SOAPMessage对象。

      AttachmentPart ap1 = m.createAttachmentPart();
         ap1.setContent(contentString1, "text/plain");
         m.addAttachmentPart(ap1); 

    以下代码段创建并将第二个AttachmentPart实例添加到同一消息。 jpegData是表示jpeg文件的二进制字节缓冲区。

      AttachmentPart ap2 = m.createAttachmentPart();
         byte[] jpegData =  ...;
         ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
         m.addAttachmentPart(ap2); 

    getContent方法从AttachmentPart对象检索内容和标题。 根据现有的DataContentHandler对象,返回的Object可以是与MIME类型相对应的类型化的Java对象,也可以是包含内容为字节的对象( InputStream

      String content1 = ap1.getContent();
         java.io.InputStream content2 = ap2.getContent(); 
    方法clearContentAttachmentPart对象中删除所有内容,但不影响其头信息。
      ap1.clearContent(); 
    从以下版本开始:
    1.6
    • 构造方法摘要

      构造方法  
      Constructor 描述
      AttachmentPart​()  
    • 方法摘要

      所有方法  接口方法  抽象方法  具体的方法 
      Modifier and Type 方法 描述
      abstract void addMimeHeader​(String name, String value)
      向该 AttachmentPart对象添加具有指定名称和值的MIME标头。
      abstract void clearContent​()
      清除此 AttachmentPart对象的内容。
      abstract Iterator<MimeHeader> getAllMimeHeaders​()
      检索这一切的头 AttachmentPart对象为在一个迭代 MimeHeader对象。
      abstract InputStream getBase64Content​()
      返回一个 InputStream其可以被用来获得的内容 AttachmentPart为Base64编码字符数据,此方法将进行Base64编码,附着和返回的原始字节。
      abstract Object getContent​()
      获取此 AttachmentPart对象的内容作为Java对象。
      String getContentId​()
      获取名称为“Content-ID”的MIME标头的值。
      String getContentLocation​()
      获取名称为“Content-Location”的MIME标头的值。
      String getContentType​()
      获取名称为“Content-Type”的MIME标头的值。
      abstract DataHandler getDataHandler​()
      获取 DataHandler对象的 AttachmentPart对象。
      abstract Iterator<MimeHeader> getMatchingMimeHeaders​(String[] names)
      检索与给定数组中的名称相匹配的所有 MimeHeader对象。
      abstract String[] getMimeHeader​(String name)
      获取由给定的 String标识的标题的所有值。
      abstract Iterator<MimeHeader> getNonMatchingMimeHeaders​(String[] names)
      检索名称与给定数组中的名称不匹配的所有 MimeHeader对象。
      abstract InputStream getRawContent​()
      获取此内容 AttachmentPart对象作为InputStream仿佛调用了到 getContent ,没有 DataContentHandler已经登记为 content-type这一点 AttachmentPart
      abstract byte[] getRawContentBytes​()
      获取 AttachmentPart对象的内容作为byte []数组,就像对 getContent DataContentHandler已经注册了 content-type ,并且没有注册 AttachmentPart
      abstract int getSize​()
      返回此 AttachmentPart对象中的字节数。
      abstract void removeAllMimeHeaders​()
      删除所有的MIME标题条目。
      abstract void removeMimeHeader​(String header)
      删除与给定名称相匹配的所有MIME标头。
      abstract void setBase64Content​(InputStream content, String contentType)
      将此附件部分从所述的Base64源的内容 InputStream和设置的值 Content-Type头中包含的值 contentType ,此方法将首先解码的base64输入并写入到附接所得的原始字节。
      abstract void setContent​(Object object, String contentType)
      将此附件部分的内容设置为给定的 Object的内容,并将 Content-Type标头的值设置为给定类型。
      void setContentId​(String contentId)
      使用给定值设置名称为“Content-ID”的MIME标头。
      void setContentLocation​(String contentLocation)
      使用给定值设置名称为“Content-Location”的MIME头。
      void setContentType​(String contentType)
      使用给定值设置名称为“Content-Type”的MIME头。
      abstract void setDataHandler​(DataHandler dataHandler)
      将给定 DataHandler对象作为此数据处理程序 AttachmentPart对象。
      abstract void setMimeHeader​(String name, String value)
      将与给定名称匹配的第一个标题条目更改为给定值,如果没有现有标题匹配,则添加一个新标题。
      abstract void setRawContent​(InputStream content, String contentType)
      将此附件部分以使得由包含的内容 InputStream content并设定的值 Content-Type头中所包含的值 contentType
      abstract void setRawContentBytes​(byte[] content, int offset, int len, String contentType)
      将此附件部分以使得由包含的内容 byte[]阵列 content并设置的值 Content-Type头中所包含的值 contentType
    • 构造方法详细信息

      • AttachmentPart

        public AttachmentPart​()
    • 方法详细信息

      • getSize

        public abstract int getSize​()
                             throws SOAPException
        返回此 AttachmentPart对象中的字节数。
        结果
        这个 AttachmentPart对象的大小(以字节为单位),如果大小无法确定,则为-1
        异常
        SOAPException - 如果此附件的内容损坏,如果在尝试确定大小时有异常。
      • clearContent

        public abstract void clearContent​()
        清除此AttachmentPart对象的内容。 MIME标题部分保持不变。
      • getContent

        public abstract Object getContent​()
                                   throws SOAPException
        将此AttachmentPart对象的内容作为Java对象获取。 返回的Java对象的类型取决于(1)用于解释字节的DataContentHandler对象,(2) Content-Type给出的Content-Type

        对于MIME内容类型“text / plain”,“text / html”和“text / xml”, DataContentHandler对象执行到与MIME类型对应的Java类型的转换。 对于其他MIME类型, DataContentHandler对象可以将包含内容数据的InputStream对象作为原始字节返回。

        柔顺SAAJ-实现必须,作为最低限度,返回java.lang.String对应于任何内容流对象与Content-Type的值text/plain ,一个javax.xml.transform.stream.StreamSource对应于内容流对象与Content-Type的值text/xml ,一个java.awt.Image对应于一个内容的流对象其中Content-Type价值为image/gifimage/jpeg 对于安装的DataContentHandler对象不明白的内容类型, DataContentHandler对象需要返回一个java.io.InputStream对象与原始字节。

        结果
        一个具有这个 AttachmentPart对象的内容的Java对象
        异常
        SOAPException - 如果没有将内容设置到此 AttachmentPart对象中,或者是否存在数据转换错误
      • getRawContent

        public abstract InputStream getRawContent​()
                                           throws SOAPException
        获取此内容AttachmentPart对象作为InputStream仿佛调用了到getContent ,没有DataContentHandler已经登记为content-type这一点AttachmentPart

        请注意,从返回的InputStream读取将导致消息流中的数据。 调用后续API之前,调用方有责任重新设置InputStream。 如果需要原始附件内容的副本,则应使用getRawContentBytes() API。

        结果
        一个 InputStream从其中由包含在所述原始数据 AttachmentPart可被访问。
        异常
        SOAPException - 如果没有将内容设置到此 AttachmentPart对象中,或者是否存在数据转换错误。
        从以下版本开始:
        1.6,SAAJ 1.3
        另请参见:
        getRawContentBytes()
      • getRawContentBytes

        public abstract byte[] getRawContentBytes​()
                                           throws SOAPException
        获取此内容 AttachmentPart对象作为byte []数组仿佛呼叫已作出 getContent和无 DataContentHandler已经登记为 content-type此的 AttachmentPart
        结果
        一个 byte[]阵列包含的原始数据 AttachmentPart
        异常
        SOAPException - 如果在此 AttachmentPart对象中没有设置内容,或者是否存在数据转换错误。
        从以下版本开始:
        1.6,SAAJ 1.3
      • getBase64Content

        public abstract InputStream getBase64Content​()
                                              throws SOAPException
        返回一个 InputStream ,可用于获取 AttachmentPart的内容作为Base64编码字符数据,此方法将base64编码附件的原始字节并返回。
        结果
        一个 InputStream从中Base64编码 AttachmentPart可被读取。
        异常
        SOAPException - 如果没有内容设置到此 AttachmentPart对象中,或者是否存在数据转换错误。
        从以下版本开始:
        1.6,SAAJ 1.3
      • setContent

        public abstract void setContent​(Object object,
                                        String contentType)
        将此附件部分的内容设置为给定的Object的内容,并将Content-Type标头的值设置为给定类型。 Object的类型应对应于Content-Type给出的值。 这取决于所使用的DataContentHandler对象的特定集合。
        参数
        object - 构成此附件部分内容的Java对象
        contentType - 指定内容类型的MIME字符串
        异常
        IllegalArgumentException - 如果contentType与内容对象的类型不匹配,或者如果此内容对象没有 DataContentHandler对象,则可能会抛出
        另请参见:
        getContent()
      • setRawContent

        public abstract void setRawContent​(InputStream content,
                                           String contentType)
                                    throws SOAPException
        将此附件部分以使得由包含的内容InputStream content并设定的值Content-Type头中所包含的值contentType

        对getSize()的后续调用可能不是内容大小的精确度量。

        参数
        content - 添加到附件部分的原始数据
        contentType - 设置为 Content-Type标头的值
        异常
        SOAPException - 如果在设置内容时出现错误
        NullPointerException - 如果 content为空
        从以下版本开始:
        1.6,SAAJ 1.3
      • setRawContentBytes

        public abstract void setRawContentBytes​(byte[] content,
                                                int offset,
                                                int len,
                                                String contentType)
                                         throws SOAPException
        将此附件部分以使得由包含的内容 byte[]阵列 content并设置的值 Content-Type头中所包含的值 contentType
        参数
        content - 添加到附件部分的原始数据
        contentType - 设置为 Content-Type标题的值
        offset - 内容的字节数组中的偏移量
        len - 形成内容的字节数
        异常
        SOAPException - 如果设置内容或内容为空,则出现错误
        从以下版本开始:
        1.6,SAAJ 1.3
      • setBase64Content

        public abstract void setBase64Content​(InputStream content,
                                              String contentType)
                                       throws SOAPException
        将此附件部分从所述的Base64源的内容InputStream和设置的值Content-Type头中包含的值contentType ,此方法将首先解码的base64输入并写入到附接所得的原始字节。

        对getSize()的后续调用可能不是内容大小的精确度量。

        参数
        content - 要添加到附件部分的base64编码数据
        contentType - 设置为 Content-Type头的值
        异常
        SOAPException - 如果在设置内容时出现错误
        NullPointerException - 如果 content为空
        从以下版本开始:
        1.6,SAAJ 1.3
      • getDataHandler

        public abstract DataHandler getDataHandler​()
                                            throws SOAPException
        获取此 DataHandler对象的 AttachmentPart对象。
        结果
        与该 DataHandler对象关联的 AttachmentPart对象
        异常
        SOAPException - 如果此 AttachmentPart对象中没有数据
      • setDataHandler

        public abstract void setDataHandler​(DataHandler dataHandler)
        将给定DataHandler对象作为此数据处理程序AttachmentPart对象。 通常,在传入消息中,数据处理程序将自动设置。 当使用内容创建和填充消息时,可以使用setDataHandler方法从各种数据源获取数据到消息中。
        参数
        dataHandler - 要设置的 DataHandler对象
        异常
        IllegalArgumentException - 如果指定的 DataHandler对象有问题
      • getContentId

        public String getContentId​()
        获取名称为“Content-ID”的MIME标头的值。
        结果
        一个 String给出“Content-ID”头或 null的值,如果没有
        另请参见:
        setContentId(java.lang.String)
      • getContentLocation

        public String getContentLocation​()
        获取名称为“Content-Location”的MIME标头的值。
        结果
        一个 String给出“内容位置”标题的值或 null如果没有
      • getContentType

        public String getContentType​()
        获取名称为“Content-Type”的MIME标头的值。
        结果
        一个 String给出了“Content-Type”头或 null的值,如果没有
      • setContentId

        public void setContentId​(String contentId)
        使用给定值设置名称为“Content-ID”的MIME标头。
        参数
        contentId - 一个 String给出“Content-ID”头的值
        异常
        IllegalArgumentException - 如果指定的值为 contentId有问题
        另请参见:
        getContentId()
      • setContentLocation

        public void setContentLocation​(String contentLocation)
        使用给定值设置名称为“Content-Location”的MIME头。
        参数
        contentLocation - 一个 String给出“内容位置”标题的值
        异常
        IllegalArgumentException - 如果指定的内容位置有问题
      • setContentType

        public void setContentType​(String contentType)
        使用给定值设置名称为“Content-Type”的MIME头。
        参数
        contentType - a String给出“Content-Type”头的值
        异常
        IllegalArgumentException - 如果指定的内容类型有问题
      • removeMimeHeader

        public abstract void removeMimeHeader​(String header)
        删除与给定名称相匹配的所有MIME标头。
        参数
        header - 要删除的MIME标题的字符串名称
      • removeAllMimeHeaders

        public abstract void removeAllMimeHeaders​()
        删除所有的MIME标题条目。
      • getMimeHeader

        public abstract String[] getMimeHeader​(String name)
        获取由给定的 String标识的标题的所有值。
        参数
        name - 标题的名称; 示例:“Content-Type”
        结果
        一个 String数组给出了指定头的值
        另请参见:
        setMimeHeader(java.lang.String, java.lang.String)
      • setMimeHeader

        public abstract void setMimeHeader​(String name,
                                           String value)
        将与给定名称匹配的第一个标题条目更改为给定值,如果没有现有标题匹配,则添加一个新标题。 此方法也会删除所有匹配的头文件,但第一个。

        请注意,RFC822头文件只能包含US-ASCII字符。

        参数
        name - 一个 String给出要搜索的标题的名称
        value - 一个 String给出为名称与给定名称匹配的标题设置的值
        异常
        IllegalArgumentException - 如果指定的MIME名称或值有问题
      • addMimeHeader

        public abstract void addMimeHeader​(String name,
                                           String value)
        将具有指定名称和值的MIME标头添加到此AttachmentPart对象。

        请注意,RFC822头文件只能包含US-ASCII字符。

        参数
        name - 一个 String给出要添加的标题的名称
        value - 一个 String给出要添加的标题的值
        异常
        IllegalArgumentException - 如果指定的mime头名或值有问题
      • getAllMimeHeaders

        public abstract Iterator<MimeHeader> getAllMimeHeaders​()
        检索这一切的头 AttachmentPart对象为在一个迭代 MimeHeader对象。
        结果
        一个 Iterator对象与所有的这个 AttachmentPart对象的Mime标头
      • getMatchingMimeHeaders

        public abstract Iterator<MimeHeader> getMatchingMimeHeaders​(String[] names)
        检索与给定数组中的名称相匹配的所有 MimeHeader对象。
        参数
        names - 要返回的MIME标题的名称的 String数组
        结果
        所有MIME头匹配给定数组中的一个名称作为一个 Iterator对象
      • getNonMatchingMimeHeaders

        public abstract Iterator<MimeHeader> getNonMatchingMimeHeaders​(String[] names)
        检索名称与给定数组中的名称不匹配的所有 MimeHeader对象。
        参数
        names - 具有MIME标题名称的 String数组不被返回
        结果
        AttachmentPart对象中的所有MIME标头,除了与给定数组中的一个名称相匹配的对象。 不匹配的MIME标题作为Iterator对象返回。