WSDL generate method with no parameters

13,019

Solution 1

try some thing like this

<message name="RemoveURLRequest">

</message>

without using the part element.

Solution 2

You must create an empty complex Type and use it as parameter. see the following post which is a similar question : WSDL Type for getter without parameter.

Share:
13,019
kardanov
Author by

kardanov

Updated on June 04, 2022

Comments

  • kardanov
    kardanov almost 2 years

    I try to generate webservice using WSDL file. There is one method with no input parameter. I did it the following way:

    ...
    <types>
    <xsd:schema targetNamespace="http://api.registration.company.com"
        xmlns:base="http://base.api.registration.company.com">
        ...
        <xsd:element name="RemoveURLRequest">
            <xsd:complexType>
                <xsd:sequence />
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="RemoveURLResponse" type="xsd:boolean" />
    </xsd:schema>
    </types>
    ...
    <message name="RemoveURLRequest">
        <part name="RemoveURLRequest" element="tns:RemoveURLRequest" />
    </message>
    <message name="RemoveURLResponse">
        <part name="RemoveURLResponse" element="tns:RemoveURLResponse" />
    </message>
    ...
    <portType name="RegistrationService">
        ...
        <operation name="RemoveURL">
            <input message="tns:RemoveURLRequest" />
            <output message="tns:RemoveURLResponse" />
        </operation>
    ...
    </portType>
    <binding name="RegistrationServiceSOAP" type="tns:RegistrationService">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        ...
        <operation name="RemoveURL">
            <soap:operation soapAction=
                "http://api.registration.company.com/web/services/RegistrationService/RemoveURL"
                    style="document" />
                <input>
                    <soap:body parts="RemoveURLRequest" use="literal" />
                </input>
                <output>
                    <soap:body parts="RemoveURLResponse" use="literal" />
                </output>
        </operation>
    </binding>
    <service name="RegistrationService">
        <port name="RegistrationServiceSOAP" binding="tns:RegistrationServiceSOAP">
            <soap:address location=
                "http://api.registration.company.com/web/services/RegistrationService" />
        </port>
    </service>
    

    According to this WSDL I expect method to be generated like this:

    public boolean removeURL();
    

    But I'm getting this:

    public boolean removeURL(RemoveURLRequest removeURLRequest);
    

    Where RemoveURLRequest is an empty class:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    @XmlRootElement(name = "RemoveURLRequest")
    public class RemoveURLRequest {
    
    }
    

    What am I doing wrong?