title: Soap WSDL ComplexType being posted as wrong argument type
body: <p>I have a server (SoapUI) answering requests for a WSDL.</p>
  
  <p>When sending test requests, my server code is receiving a <em>list</em> of arguments, but I'm trying to achieve is a <em>single</em> argument, of <strong>complex type</strong>, eg:</p>
  
  <pre><code>{
   ingredient_id   =&gt; INT
   something       =&gt; STRING
   ...
  }
  </code></pre>
  
  <p>My types are as follow: </p>
  
  <pre><code>  &lt;wsdl:types&gt;
      &lt;xsd:schema targetNamespace="/ingredient"&gt;
        &lt;xsd:element name="getIngredientInfo" type="tns:IngredientRequest"&gt;&lt;/xsd:element&gt;
        &lt;xsd:element name="getIngredientInfoResponse" type="tns:ingredient"&gt;&lt;/xsd:element&gt;
  
        &lt;xsd:complexType name="ingredient"&gt;
          &lt;xsd:sequence&gt;
              &lt;xsd:element name="ingredient_id" type="xsd:int" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="ingredient_name" type="xsd:string" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="status_gm" type="xsd:boolean" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="status_vegan" type="xsd:boolean" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="status_vegetarian" type="xsd:boolean" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="author_id" type="xsd:int" block="#all" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
          &lt;/xsd:sequence&gt;
        &lt;/xsd:complexType&gt;
  
        &lt;xsd:complexType name="IngredientRequest"&gt;
          &lt;xsd:sequence&gt;
              &lt;xsd:element name="ingredient_id" type="xsd:int"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="something" type="xsd:string"&gt;&lt;/xsd:element&gt;
          &lt;/xsd:sequence&gt;
        &lt;/xsd:complexType&gt;
  
      &lt;/xsd:schema&gt;
    &lt;/wsdl:types&gt;
  </code></pre>
  
  <p>Can somebody help me to understand why WSDL is making SoapUI send the arguments as a list of simple arguments, instead of a single complex argument?</p>
  
  <p>EDIT: It might be some problem with sequence tag, but I can't find the issue in that, just need some light.
  Thanks in advance!</p>
  
  <hr>
  
  <p>Sure, I have it right here:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
  &lt;wsdl:definitions
    name="ingredient"
    targetNamespace="/ingredient"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="/ingredient"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
    &lt;wsdl:types&gt;
      &lt;xsd:schema targetNamespace="/ingredient"&gt;
        &lt;xsd:element name="getIngredientInfo" type="tns:IngredientRequest"&gt;&lt;/xsd:element&gt;
        &lt;xsd:element name="getIngredientInfoResponse" type="tns:ingredient"&gt;&lt;/xsd:element&gt;
  
        &lt;xsd:complexType name="ingredient"&gt;
          &lt;xsd:sequence&gt;
              &lt;xsd:element name="ingredient_id" type="xsd:int" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="ingredient_name" type="xsd:string" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
  
              &lt;xsd:element name="status_gm" type="xsd:boolean" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="status_vegan" type="xsd:boolean" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="status_vegetarian" type="xsd:boolean" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
              &lt;xsd:element name="author_id" type="xsd:int" block="#all" minOccurs="1" maxOccurs="1"&gt;&lt;/xsd:element&gt;
          &lt;/xsd:sequence&gt;
        &lt;/xsd:complexType&gt;
  
  
        &lt;xsd:complexType name="IngredientRequest"&gt;
          &lt;xsd:sequence&gt;
              &lt;xsd:element name="ingredient_id" type="xsd:int"&gt;&lt;/xsd:element&gt;
  
              &lt;xsd:element name="something" type="xsd:string"&gt;&lt;/xsd:element&gt;
          &lt;/xsd:sequence&gt;
        &lt;/xsd:complexType&gt;
      &lt;/xsd:schema&gt;
    &lt;/wsdl:types&gt;
    &lt;wsdl:message name="getIngredientInfoRequest"&gt;
      &lt;wsdl:part element="tns:getIngredientInfo" name="parameters"/&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:message name="getIngredientInfoResponse"&gt;
  
      &lt;wsdl:part element="tns:getIngredientInfoResponse"
          name="parameters" /&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:portType name="ingredient"&gt;
      &lt;wsdl:operation name="getIngredientInfo"&gt;
        &lt;wsdl:input message="tns:getIngredientInfoRequest"/&gt;
        &lt;wsdl:output message="tns:getIngredientInfoResponse"/&gt;
      &lt;/wsdl:operation&gt;
    &lt;/wsdl:portType&gt;
    &lt;wsdl:binding name="ingredientSOAP" type="tns:ingredient"&gt;
  
      &lt;soap:binding style="document"
          transport="http://schemas.xmlsoap.org/soap/http" /&gt;
      &lt;wsdl:operation name="getIngredientInfo"&gt;
          &lt;soap:operation
              soapAction="http://entropy.homelinux.org/kasak/" /&gt;
          &lt;wsdl:input&gt;
              &lt;soap:body use="literal" /&gt;
          &lt;/wsdl:input&gt;
          &lt;wsdl:output&gt;
              &lt;soap:body use="literal" /&gt;
          &lt;/wsdl:output&gt;
  
      &lt;/wsdl:operation&gt;
    &lt;/wsdl:binding&gt;
    &lt;wsdl:service name="ingredient"&gt;
      &lt;wsdl:port binding="tns:ingredientSOAP" name="ingredientSOAP"&gt;
        &lt;soap:address location="http://entropy.homelinux.org/kasak/"/&gt;
      &lt;/wsdl:port&gt;
    &lt;/wsdl:service&gt;
  &lt;/wsdl:definitions&gt;
  </code></pre>
  
  <p>Still have no hints on it :(</p>