我在进度OpenEdge中从SOAP WS获得完整响应时遇到问题。 “bprowsdldoc”app为DATASET生成了完整的调用和输出结构,但在DATASET中我只有“document”类型的最后一个元素。 响应如下:
<GetDocumentsResponse>
<documentsCount>3</documentsCount>
<document>
<content filename="file1.xml" mime="application/xml"> [base64] </content>
</document>
<document>
<content filename="file2.xml" mime="application/xml"> [base64] </content>
</document>
<document>
<content filename="file3.xml" mime="application/xml"> [base64] </content>
</document>
<documentsInfo>All done.</documentsInfo>
</GetDocumentsResponse>
我的目标是在输出DATASET中获取所有“文档”元素(计数3只是一个样本)或获得完整响应XML作为LONGCHAR。 任何帮助将不胜感激。
修改
Web服务是我公司内部的并且称之为VPN连接,所以我不能给你链接。 但是bprowsdldoc为方法“GetDocuments”生成了这样的代码:
DEFINE VARIABLE dateStart AS DATE NO-UNDO.
DEFINE VARIABLE dateEnd AS DATE NO-UNDO.
DEFINE VARIABLE documentsCount AS INT64 NO-UNDO.
DEFINE TEMP-TABLE document NO-UNDO
FIELD docId AS CHARACTER.
DEFINE TEMP-TABLE content NO-UNDO
FIELD filename AS CHARACTER
XML-NODE-TYPE "ATTRIBUTE"
FIELD mime AS CHARACTER
XML-NODE-TYPE "ATTRIBUTE"
FIELD content_Text AS RAW
XML-NODE-TYPE "TEXT"
FIELD document_id AS RECID
XML-NODE-TYPE "HIDDEN" .
DEFINE DATASET documentDset
XML-NODE-TYPE "HIDDEN"
FOR document, content
PARENT-ID-RELATION RELATION1 FOR document, content
PARENT-ID-FIELD document_id.
DEFINE VARIABLE documentsInfo AS CHARACTER NO-UNDO.
RUN GetDocuments IN hDocumentHandlingPort(INPUT dateStart, INPUT dateEnd, OUTPUT documentsCount, OUTPUT DATASET documentDset, OUTPUT documentsInfo).
调用此方法后,我得到了对变量 documentsCount 和 documentsInfo 的正确响应,但在TEMP-TABLE 内容中我只有一行<来自回复的em> document 元素(2017-03-16至2017-03-16期间应该有3个作为我帖子顶部的示例回复)。
WSDL中的响应如下所示:
<xs:element name="GetDocumentsResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="documentsCount" type="xs:long"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="document" type="ns1:documentType"/>
<xs:element minOccurs="0" name="documentsInfo" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我认为这个问题可能与元素文档的 maxOccurs 属性有关 - 它是无界的,也许应该有一些数值......
你能帮助mi处理这个问题吗?
答案 0 :(得分:0)
由于知识库中描述的PSC00323593缺陷,这种情况是一个错误。但是在黑暗中总是有光,所以也有解决方法:
使用带有-show100style参数的WSDL Analyzer(bprowsdldoc) 生成文档。使用旧语法按预期工作, 返回所有预期记录。
在遇到的场景中,备用文档使用类型 LONGCHAR参数。然后可以组合来自的代码 原始文档(特别是TEMP-TABLE和DATASET 使用-show100style文档中的代码定义)。该 READ-XML方法用于读取LONGCHAR输出参数 数据集。
或
将APPEND选项添加到DATASET参数。
您可以找到完整的文章here。