ID:               43004
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jreese at multiplexhq dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         SOAP related
 Operating System: All
 PHP Version:      5.2.4
-Assigned To:      
+Assigned To:      dmitry


Previous Comments:
------------------------------------------------------------------------

[2007-10-17 13:13:39] jreese at multiplexhq dot com

Description:
------------
The fix provided in bug report #41004 has caused issues with a 3rd
party web service I am working with.  As detailed in the referenced
report, the complextype has elements where minOccurs=0 and maxOccurs=1.

To quote from the bug report:

"When the corresponding class member is null, an empty element is send.
How i can tell the soap client to not send elements when minOccurs=0 and
the value is NULL?"

In our case, we need our soap client to still send the empty xml
elements if the class member is null.

The remote service is running on .NET and we do not have access to
modify the source.  I could make a modified wsdl file but do not think
it is the best solution to override the wsdl provided by the service.

Below I'm going to use the same example in the previous bug report.

Reproduce code:
---------------
Complex type definition:
<complexType name="SimulateRequest">
  <all>
        <element name="product1Type" type="impl:Product1Type"/>
        <element name="product1BankCardTypeCd"
type="impl:Product1BankCardTypeCd" minOccurs="0"/>
  </all>
</complexType>

Php Code to call:
        $simulationRequest[0]->setProduct1Type("CLA");
        $simulationRequest[0]->setProduct1BankCardTypeCd(NULL);

Php class SimulateRequest extract:
        class SimulateRequest{
           private  $product1Type ;
           public  function  getProduct1Type(){
            return $this->product1Type;
           }
           public function setProduct1Type($param){
             $this->product1Type=$param;
           }
           private  $product1BankCardTypeCd ;
           public  function  getProduct1BankCardTypeCd(){
             return $this->product1BankCardTypeCd;
           }
           public function setProduct1BankCardTypeCd($param){
            $this->product1BankCardTypeCd=$param;
           }

Expected result:
----------------
<ns1:simulationRequest>
         <ns1:product1Type>REV</ns1:product1Type>
         <ns1:product1BankCardTypeCd/>
</ns1:simulationRequest>

Actual result:
--------------
<ns1:simulationRequest>
         <ns1:product1Type>REV</ns1:product1Type>
</ns1:simulationRequest>


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=43004&edit=1

Reply via email to