# SOAP extension and object records

- Thread: https://externals.io/message/36060
- Original archive: https://news-web.php.net/php.internals/36060
- Started by Giovanni Giacobbi on 2008-03-08T09:40:07+00:00
- Messages: 1
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #36060 — Giovanni Giacobbi — 2008-03-08T09:40:07+00:00

URL: https://externals.io/message/36060#36060

Greetings,

I'm a newbie in SOAP, and I'm doing my first experiments using PHP. I suspect there is a bug in records processing, but I thought it was useful to discuss it here before submitting a possibly bogus bug report.

I'll explain briefly the test case, but before a tiny side note: I've been reading thru the ext/soap source code and cleaned up some white spaces. Shall I submit that patch?

Back in topic, I define a simple record type:

    <schema xmlns:tns="urn:testing" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:testing">
      <complexType name="Product">
        <all>
          <element name="id" type="int" />
          <element name="title" type="string" />
          <element name="description" type="string" minOccurs="0" />
        </all>
      </complexType>
    </schema>

And a simple operation:

  <message name="genericObjectId">
    <part name="id" type="xsd:int" />
  </message>
  <message name="ProductCommit">
    <part name="product" type="tns:Product" />
  </message>
    <operation name="ProductCommit">
      <input message="ProductCommit" />
      <output message="genericObjectId" />
    </operation>

Now the SOAP envelope. First a complete record but with bogus data (a string in place of the int):

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <product>
      <id>hello</id>
      <title>Product name</title>
    </product>
  </soap:Body>
</soap:Envelope>

So far all fine, a SOAP fault is returned:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>SOAP-ERROR: Encoding: Violation of encoding rules</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

But if I submit an incomplete record no errors are returned:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <product>
      <title>Product name</title>
    </product>
  </soap:Body>
</soap:Envelope>

The server callback function is called with the following arguments:

array(1) {
  [0]=>
  object(stdClass)#2 (1) {
    ["title"]=>
    string(12) "Product name"
  }
}

But I'd expect another encoding violation fault, because there was NOT minOccurs="0" in Product's <id> element definition. Am I doing something wrong?

Thank you

-- 
Giovanni Giacobbi
