修改为包含复杂类型的WSDL现在请求未正确编码



我有一个来自第三方服务的原始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 Service Assistant进行了修改,它生成了一个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,

但用我的mod我会发送

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

我是否可以使用扩展的wsdl来实现这一点,并让大型机知道strXMLInput仍然是一个字符串,但带有子项,或者任何其他想法?谢谢

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

我相信您可以创建一个支持XML的应用程序,并更接近您想要的结果。

更新:

我误解了你在做什么,这是一个请求者而不是提供者,对吧?如果是这种情况,那么我认为您需要直接链接到DFHPIRT。在我为您介绍的主题"创建一个支持XML的服务请求者应用程序"之后的主题中,将对此进行介绍。

最新更新