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