首页 > 解决方案 > 关于附件部分的问题。附件是按什么顺序来的?

问题描述

我有调用包含附件的 SOAP Web 服务的代码。这是我获取附件的Java代码(其中的一部分)

Iterator<?> i = soapResponse.getAttachments();
Object obj = null;
while (i.hasNext()) {
    System.out.println("file found");
    AttachmentPart att = (AttachmentPart) i.next();
    //now I want to use the DocumentID tag(from the XML response) of this
    // attachment )

当我在 SOAP UI 中调用 SOAP Web 服务时,这里是对应于附件的 XML 响应部分

 <ns2:result xsi:type="ns0:DocumentDetails" xmlns:ns2="http://xmlns.oracle.com/apps/financials/commonModules/shared/model/erpIntegrationService/types/" xmlns:ns1="http://xmlns.oracle.com/adf/svc/types/" xmlns:ns0="http://xmlns.oracle.com/apps/financials/commonModules/shared/model/erpIntegrationService/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ns0:Content>
               <xop:Include href="cid:e01fe52d-2ddf-4ad0-a556-f5ecc0f313ce" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
            </ns0:Content>
            <ns0:FileName xsi:nil="true"/>
            <ns0:ContentType xsi:nil="true"/>
            <ns0:DocumentTitle>CWT_BTA_ORCLGB-20190604.zip</ns0:DocumentTitle>
            <ns0:DocumentAuthor>madeUpEmail@oracle.com</ns0:DocumentAuthor>
            <ns0:DocumentSecurityGroup>FAFusionImportExport</ns0:DocumentSecurityGroup>
            <ns0:DocumentAccount>prj$/projectFoundation$/import$</ns0:DocumentAccount>
            <ns0:DocumentName>CWT_BTA_ORCLGB-20190604.zip</ns0:DocumentName>
            <ns0:DocumentId>32331748</ns0:DocumentId>
         </ns2:result>
         <ns2:result xsi:type="ns0:DocumentDetails" xmlns:ns2="http://xmlns.oracle.com/apps/financials/commonModules/shared/model/erpIntegrationService/types/" xmlns:ns1="http://xmlns.oracle.com/adf/svc/types/" xmlns:ns0="http://xmlns.oracle.com/apps/financials/commonModules/shared/model/erpIntegrationService/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ns0:Content>
               <xop:Include href="cid:bbbbc837-f738-4a86-8721-d06f6fb0fa16" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
            </ns0:Content>
            <ns0:FileName xsi:nil="true"/>
            <ns0:ContentType xsi:nil="true"/>
            <ns0:DocumentTitle>CWT_BTA_ORCLUS-20190705.zip</ns0:DocumentTitle>
            <ns0:DocumentAuthor>madeupEmail@oracle.com</ns0:DocumentAuthor>
            <ns0:DocumentSecurityGroup>FAFusionImportExport</ns0:DocumentSecurityGroup>
            <ns0:DocumentAccount>prj$/projectFoundation$/import$</ns0:DocumentAccount>
            <ns0:DocumentName>CWT_BTA_ORCLUS-20190705.zip</ns0:DocumentName>
            <ns0:DocumentId>32331767</ns0:DocumentId>

如您所见,有两个附件: CWT_BTA_ORCLGB-20190604.zip 和 CWT_BTA_ORCLUS-20190705.zip ,包含在 DocumentName 标记中,但它们也有 DocumentID

我的问题是,我的 java 代码中附件的顺序(我上面的 while 循环)是否与 XML 响应中的顺序相同?我计划解析 XML 响应以获取数组中的 DocumentID,然后在 while 循环内遍历该数组以获取每个附件的相应“documentID”

标签: javasoap

解决方案


假设您使用多部分 MIME ...

回复: https ://www.w3.org/TR/SOAP-attachments

上述参考表明,链接可以从 Document-ID 或 Content-Location(绝对或相对)到其他 MIME 附件。本说明或 W3C 建议(我能找到)中没有任何内容表明存在预期或必需的附件顺序。

我建议将 SOAP 消息中的 Document-ID 与 MIME 部分中的 Document-ID 匹配。


推荐阅读