2013-07-30 53 views
1

我有一個來自thirdparty服務的原始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服務助手,生成一個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>  

我haved改變了WSDL,所以我的字帖將所有發送正確的ACORD XML,而不是服務大樓在COBOL一個漫長的字符串的元素。 透過WireShark我捕捉到服務請求,並完全XML文檔不編碼,正確的請求,所以要

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

但我國防部我送

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

反正我有可以使這個工作與擴大的WSDL和讓大型機知道,strXMLInput仍然是一個字符串,但有孩子,或任何其他想法?謝謝...

回答

2

它看起來像你想在你的SOAP數據流中的項目中嵌入XML。這將需要一個CDATA部分。 CICS TS版本4不直接支持這一點,我不確定版本5.

我相信你可以創建一個XML-aware application並接近你期望的結果。

更新:

我誤會你在做什麼,這是一個請求者不是提供商,對不對?如果是這樣的話,我相信你需要直接鏈接到DFHPIRT。在我指出的主題之後,它將在主題中進行介紹。

+0

我們目前在4.2,我嘗試將知道的屬性添加到dfhws2ls中,但它被忽略,可能是由於映射級別。任何想法如何我可以插入CDATA在copybook/wsdl。感謝您的迴應。 –

+0

我很感謝你的回答,我最終修改了我的wsdl/copybook generate,在一個元素中使用字符串輸入,然後使用我的自定義copybook和所有acord元素,然後使用copybook上的cobol xml generate並將其移動到字符串中輸入元素。這給了我更多的控制權,並且我可以使用CICS的預先存在的管道和配置。謝謝 –

相關問題