【问题标题】:WSDL modified to included complex type now request not encoded correctly修改为包含复杂类型的 WSDL 现在请求未正确编码
【发布时间】:2013-07-30 16:08:27
【问题描述】:

我有一个来自第三方服务的原始 wsdl。 简化。

<s:element name="ProcessRequest">
  <s:complexType>
     <s:sequence>
       <s:element minOccurs="0"  maxOccurs="1" name="strXMLInput" type="s:string"/>              
     </s:sequence>
  </s:complexType>
  </s:element>

我已经为 CICS Web 服务助手进行了修改,它生成一个 COBOL 副本来表示应该发送到服务的 xml。

简化。

<s:element name="ProcessRequest">
    <s:complexType>
    <s:sequence>
        <s:element  name="strXMLInput" >
            <s:complexType>
                <s:sequence>
                 <s:element name="ACORD">
                    <s:complexType>
                    <s:sequence>
                     <s:element name="SignonRq">
                      <s:complexType>
                        <s:sequence>
                                        <s:element name="CustLoginId">
                             <s:simpleType>
                                 <s:restrictionbase="s:string"  >
                                  <s:length value="10"/>
                                       </s:restriction>
                            </s:simpleType>
                            </s:element>    

我已经更改了 wsdl,因此我的字帖将包含所有元素,可以将正确的 ACORD xml 发送到服务,而不是在 cobol 中构建一个冗长的字符串。 使用 WireShark,我捕获了服务请求,并且完全是未编码的文档 xml,因此是正确的请求

    <ProcessRequest><strXMLInput>&gt:Acord....etc,

但我正在发送我的模组

     <ProcessRequest><strXMLInput><Acord....etc.//actual doc xml 

无论如何我可以使用扩展的 wsdl 来完成这项工作,并让大型机知道 strXMLInput 仍然是一个字符串,但有孩子,或任何其他想法?谢谢...

【问题讨论】:

    标签: xml web-services wsdl cobol cics


    【解决方案1】:

    看起来您想将 XML 嵌入到 SOAP 数据流中的项目中。这将需要一个CDATA 部分。 CICS TS 版本 4 不直接支持这个,我不确定版本 5。

    我相信您可以创建一个XML-aware application 并更接近您想要的结果。

    更新:

    我误解了你在做什么,这是请求者而不是提供者,对吧?如果是这种情况,那么我相信您需要直接链接到 DFHPIRT。在我向您指出的Creating an XML-aware service requester application 之后,该主题已涵盖该主题。

    【讨论】:

    • 我们目前在 4.2,我尝试了添加到 dfhws2ls 的感知属性,但它被忽略了,可能是由于映射级别。任何想法如何在 copybook/wsdl 中插入 CDATA。感谢您的回复。
    • 感谢您的回答,我最终修改了我的 wsdl/copybook generate 以在一个元素中接受字符串输入,然后将我的自定义 copybook 与所有 acord 元素一起使用,然后我使用 cobol xml generate抄写本并将其移动到字符串输入元素中。这给了我更多的控制权,我可以为 CICS 使用预先存在的管道和配置。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2021-08-30
    • 2013-10-18
    • 2017-09-20
    • 2014-02-03
    相关资源
    最近更新 更多