Re: [SOAP] xsi:type or maybe SoapVar misuse?

[email protected] (Andrew Ettinger)
Newsgroups php.soap
Message-ID <[email protected]>
Ah, also note in the error message that SOAPCustomerSearchBasic  
extends SearchRecord, which for all intents and purposes I guess an  
abstract class as it has no properties (if that helps with any  
divination on the error message).

Cheers,
Andrew


On Apr 30, 2007, at 4:20 PM, Andrew Ettinger wrote:

> I'm pretty sure what I'm up against now is a namespace issue and/or  
> a misunderstanding of how to use SoapVar.
>
> From the NetSuite docs, the request should look something like:
>
> <soapenv:Body>
> <search xmlns="urn:messages_2_5.platform.webservices.netsuite.com">
> <searchRecord xsi:type="ns1:ContactSearch"  
> xmlns:ns1="urn:relationships_2_5.lists.webservices.netsuite.com">
> 	<ns1:customerJoin xsi:type="ns2:CustomerSearchBasic"  
> xmlns:ns2="urn:common_2_5.platform.webservices.netsuite.com">
> 		<ns2:internalId operator="anyOf"  
> xsi:type="ns3:SearchMultiSelectField"   
> xmlns:ns3="urn:core_2_5.platform.webservices.netsuite.com">
> 			<ns3:searchValue internalId="1" type="customer"  
> xsi:type="ns3:RecordRef"/ >
> 		</ns2:internalId>
> 	</ns1:customerJoin>
> </searchRecord>
> </search>
> </soapenv:Body>
>
> But what I'm actually requesting looks like:
>
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ 
> envelope/"  
> xmlns:ns1="urn:messages_2_5.platform.webservices.netsuite.com">
> <SOAP-ENV:Body>
> <ns1:search>
> 	<customerJoin>
> 	 	<internalId>
> 			<operator>anyOf</operator>
> 			<searchValue>1</searchValue>
> 		</internalId>
> 	</customerJoin>
> </ns1:search>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> The code to do so looks something along the lines of:
>
> $ssr = new SOAPContactSearch();
> $ssr->customerJoin = new SOAPCustomerSearchBasic();
> $ssr->customerJoin->internalId = new SOAPSearchMultiSelectField();
> $ssr->customerJoin->internalId->operator =  
> SOAPSearchMultiSelectFieldOperator::$anyOf;
> $ssr->customerJoin->internalId->searchValue = "1";
> $param = new SoapVar($ssr, SOAP_ENC_OBJECT);
> $search_result = $netsuite_service->search($param); //  
> $netsuite_service extends SoapClient, naturally
>
> The generated error is:
>
> org.xml.sax.SAXException: Unable to marshall between XML and Castor  
> Objects :unable to find FieldDescriptor for 'internalId' in  
> ClassDescriptor of SearchRecord
>
> I assume I'm using SoapVar() incorrectly or this is a namespace  
> issue (like I'm not specifying xsi:type)???
>
> Thanks for any help!
>
> ~ Andrew
>
> -- 
> PHP Soap Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.