0

具有特殊字符 (Ý,¨) 的 XML 消息(实际上是 XML 有效字符)在未指定时被视为分配给消息的默认编码的无效字符。我们试图通过在消息顶部专门添加编码类型来完成这项工作。我们使用了 UTF-8 编码。因此,通过在 XML 消息的最开头添加“”,理想情况下,这些字符应该成为有效字符。

为了添加 XML 声明,我们在执行 XML GENERATE 以在 xml 文档中生成声明时使用了 WITH ENCODING 1208。

  • 默认编码选项:IBM-1140
  • XML 文档是在一个字母数字数据项中生成的。
  • XMLPARSE (XMLSS) 编译器选项生效

然后我们将生成的 XML(带有声明)放入 CICS 容器 DFHWS-BODY。但是 CICS 然后将信封附加到从 Cobol 程序传递的 xml 文档的最开头。

那么,这里的问题是我们如何将 XML 声明(在 CICS 中)附加到 xml 文档的最开头,以便外部环境识别编码选项并将特殊字符转换为正确的格式?

4

2 回答 2

0

您正在程序中生成 XML?这是一个有趣的方法。通常,对于 CICS Web服务(与 CICS Web支持DFHWS-BODY程序相反),CICS 根据文件从您在容器中提供的数据结构生成 XML WSBIND。也许您选择使用 的XML-ONLY参数DFHWS2LS

快速搜索表明您一直在尝试以各种方式解决此问题。您可能想尝试CODEPAGE(1208)compile 选项,如果需要,还可以尝试NOSQLCCSIDcompile 选项。

在任何情况下,如果您想在 CICS 完成对响应处理之后修改响应,请使用传输处理程序。在管道配置文件中声明传输处理程序。请记住,您的传输处理程序将被请求和响应调用,对您的传输处理程序进行编码以检查它是否正在处理响应,然后才将您的 XML 声明添加到适当容器的内容中(DFHRESPONSE我相信)。您可以通过检查名为 的容器的内容来确定当前函数是否为响应DFHFUNCTION。IBM 提供的字帖DFHPIUCO将为您提供一些您需要的常量。

您将修改 CICS 通常为您处理的容器。如果您犯了一个错误,您可能会发现自己遇到了一个有趣的异常情况和一个不开心的 CICS 系统程序员。花额外的时间彻底调试您的传输处理程序,以便在发生某些极端情况时不会出现生产问题。

管道配置文件、传输处理程序等都记录在CICS 知识中心

IBM 在 2007 年 10 月 10 日出版的红皮书 SG247206实施 CICS Web 服务中提供了一个示例处理程序 (SNIFFER) 。有一个更新的同名红皮书,但似乎没有包含处理程序源代码。

于 2017-06-10T17:20:59.303 回答
0

可以编写自己的处理程序,并将该处理程序添加到管道配置 xml 作为服务处理程序。现在,当您的程序将 DFHWS-BODY 容器交还给终端 SOAP 处理程序时,它将在 DFHRESPONSE 容器中构造响应 SOAP 消息(如您​​所见,包括 SOAP 信封)。在终端 SOAP 处理程序终止后启动的所有服务处理程序(检查 DFHFUNCTION 容器的内容以确定请求的阶段)将能够根据需要更改该容器,并且可以在响应的开始。在构建新的响应容器时,请注意代码页转换,因为那里很容易出错......

于 2017-06-12T09:43:58.953 回答