ID:               39179
 Comment by:       jchernia at netsuite dot com
 Reported By:      jchernia at netsuite dot com
 Status:           No Feedback
 Bug Type:         SOAP related
 Operating System: Windows XP
 PHP Version:      5.1.6
 Assigned To:      dmitry
 New Comment:

Full WSDL - 

https://webservices.netsuite.com/wsdl/v2008_2_0/netsuite.wsdl

The code that Stu submitted will cause the problem. When making the 
get() request you will get

<baseRef/> 
instead of 
<baseRef internalId="17" type="customer" xsi:type="ns1:RecordRef"/>

where internalId and type are properties of the subclass (RecordRef) 
and not of BaseRef.

-John


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

[2008-09-30 07:47:51] stuart at stuartherbert dot com

Looks like jchernia is trying to access Netsuite's web service
(Netsuite is a popular hosted ERP solution).  You can't access their
SOAP service w/out a valid account, but if you had such an account, the
following code triggers the error:

<?php

class GetRequest
{
        public $baseRef = null;
}

class LoginRequest
{
        public $passport = null;
}

class Passport
{
        public $email = null;
        public $password = null;
        public $account = null;
        public $role = null;
}

class BaseRef
{
        public $name = null;
}

class RecordRef extends BaseRef
{
        public $internalId = null;
        public $externalId = null;
        public $type       = null;
}

$user = new Passport();
$user->email='<your netsuite login>';
$user->password='<your netsuite password>';
$user->account='<your netsuite account ID>';
$user->role=new RecordRef;
$user->role->internalId=<your role ID>;

$loginRequest = new LoginRequest;
$loginRequest->passport = $user;

$soapClient = new
SoapClient('https://webservices.netsuite.com/wsdl/v2008_1_0/netsuite.wsdl',
array('trace' => 1));
$result = $soapClient->login($loginRequest);

$requestRef = new RecordRef;
$requestRef->externalId = 200;
$requestRef->type = 'issue';

try
{
        $issue = $soapClient->get(array('recordRef' => $requestRef));
        var_dump($issue);
}
catch (Exception $e)
{
        var_dump($e);
        var_dump($soapClient->__getLastRequest());
        var_dump($soapClient->__getLastResponse());
}

?>

__getLastRequest() reports:

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:ns1="urn:messages_2008_2.platform.webservices.netsuite.com"><SOAP-ENV:Body><ns1:get><ns1:baseRef/></ns1:get></SOAP-ENV:Body></SOAP-ENV:Envelope>

and __getLastResponse() reports:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
  <soapenv:Body>
    <soapenv:Fault>
      <faultcode>soapenv:Server.userException</faultcode>
      <faultstring>org.xml.sax.SAXException:
{urn:core_2008_2.platform.webservices.netsuite.com}BaseRef is an
abstract type and cannot be instantiated</faultstring>
      <detail>
        <ns1:hostname
xmlns:ns1="http://xml.apache.org/axis/";>partners-java001.svale.netledger.com</ns1:hostname>
      </detail>
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>

Note the empty <ns1:baseRef/> in the request.  baseRef is an abstract
type, in this case extended the recordRef.  The correct SOAP request is
listed by the original poster.

Hope that helps.  If you need a Netsuite account for testing purposes,
contact me privately and I'll sort one out for you.

Best regards,
Stu
--

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

[2006-10-31 01:00:01] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

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

[2006-10-23 05:38:17] dmi...@php.net

Could you provide full WSDL file and SOAP request or reeponce that
ext/soap cannot handle correct.

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

[2006-10-18 22:24:46] jchernia at netsuite dot com

Still fails with 5.2. Is there a way to indicate that you want the
subclass, not the abstract class? I don't see any in the documentation
and I've tried lots of things.

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

[2006-10-17 17:52:43] tony2...@php.net

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip



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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/39179

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

Reply via email to