Written by

Question Yi Zhong · Nov 12, 2020

The return message structure of the SOAP service

This XML file does not appear to have any style information associated with it. The document tree is shown below.

 

WSDL

 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://herenit.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://herenit.com">
    <types>
        <s:schema elementFormDefault="qualified" targetNamespace="http://herenit.com">
            <s:element name="Sample">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" name="pInput" type="s:string"/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="SampleResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element name="ROOT" type="s0:ReqTitleList"/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:complexType name="ReqTitleList">
                <s:complexContent>
                    <s:extension base="s0:Ens_Request">
                        <s:sequence>
                            <s:element maxOccurs="unbounded" minOccurs="0" name="TitleList" nillable="true" type="s:string"/>
                        </s:sequence>
                    </s:extension>
                </s:complexContent>
            </s:complexType>
            <s:complexType name="Ens_Request">
                <s:complexContent>
                    <s:extension base="s0:Ens_Messagebody"/>
                </s:complexContent>
            </s:complexType>
            <s:complexType name="Ens_Messagebody"/>
            <s:complexType name="ArrayOfTitleListItemString">
                <s:sequence>
                    <s:element maxOccurs="unbounded" minOccurs="0" name="TitleListItem" nillable="true" type="s:string"/>
                </s:sequence>
            </s:complexType>
        </s:schema>
    </types>
    <message name="SampleSoapIn">
        <part name="parameters" element="s0:Sample"/>
    </message>
    <message name="SampleSoapOut">
        <part name="parameters" element="s0:SampleResponse"/>
    </message>
    <portType name="NewService1Soap">
        <operation name="Sample">
            <input message="s0:SampleSoapIn"/>
            <output message="s0:SampleSoapOut"/>
        </operation>
    </portType>
    <binding name="NewService1Soap" type="s0:NewService1Soap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <operation name="Sample">
            <soap:operation soapAction="http://herenit.com/HEREN.TEST.NewService1.Sample" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="NewService1">
        <port name="NewService1Soap" binding="s0:NewService1Soap">
            <soap:address location="http://172.16.136.78:57772/heren/jcpt/HEREN.TEST.NewService1.cls"/>
        </port>
    </service>
</definitions>

 

 

 

The problem is shown in figure!  thank you!

Comments

Robert Cemper · Nov 12, 2020

To get rid of xmlns: attribute In your SOAPservice class you may try

Paramter NAMESPACE = "";
0
Robert Cemper · Nov 12, 2020

methodname_"Response" is hardcoded in system class  %SOAP.WebService
I would warn for writing a customized version of it.

0
Alexander Koblov · Dec 1, 2020

Hi.

You need to specify

Parameter ARGUMENTSTYLE = "message";

For example:

Class delme.SoapService Extends %SOAP.WebService [ Language = objectscript, ProcedureBlock ]
{

Parameter ARGUMENTSTYLE = "message";

Parameter SERVICENAME = "MyService";

Parameter NAMESPACE = "http://tempuri.org";

Method Test(x As %String) As %String(XMLNAME="Root") [ WebMethod ]
{
	Return "Test"
}

}

Then response is following:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema">
   <SOAP-ENV:Body>
      <Root xmlns="http://tempuri.org">Test</Root>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
0
Yi Zhong  Dec 2, 2020 to Alexander Koblov

Thank you very much!

0