Re: Strange 'Procedure Not Present' error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I had the same problem and in  turned out that it was caused by WSDL-Caching.
I used a faulty WSDL file that was cached. I changed the WSDL, but the soap
server object kept using the cached one, resulting in procedure not present
errors. After removing the cached WSDL (files in /tmp/wsdl-XX) everything
worked fine. 
For development, you can swith of the caching in the php.ini or use an
ini_set in your code.

Johan


Eric Gorr wrote:
> 
> Well, it suddenly started working. The only thing that I can think of  
> that might have caused it to start working now is that my machine  
> rebooted and perhaps reset something cached somewhere.  Does this  
> make sense? If it matters, I am running PHP 5.2 on MacOSX 10.4.8 with  
> Apache 1.3.
> 
> On Jan 24, 2007, at 2:29 PM, Eric Gorr wrote:
> 
>> The soap server code & WSDL file is below.
>> I am using the very useful MacOSX app http://ditchnet.org/ 
>> soapclient/ to test with - if I write PHP client code, I get the  
>> same 'not present' error.
>>
>> I am being told that my IsRegistered function is not present. The  
>> WSDL file validates.
>>
>> Any ideas on why this would be the case and what I can do to fix  
>> the problem?
>>
>> p.s. if you have any suggestions on improvements I can make to the  
>> WSDL file, I would be interested.
>>
>>
>> <?PHP
>> 	function IsRegistered( $serial_number ) {
>> 		$serialNumbers = array( "42" => 1 );
>>
>> 		if (isset( $serialNumbers[ $serial_number ] ) ) {
>> 		  return true;
>> 		}
>> 		else {
>> 		  throw new SoapFault( "Server", "Unknown serial number:  
>> '$serial_number'." );
>> 		}
>> 	  }
>>
>> 	function Register( $serial_number ) {
>> 		$serialNumbers = array( "42" => 1 );
>>
>> 		if (isset( $serialNumbers[ $serial_number ] ) ) {
>> 		  return true;
>> 		}
>> 		else {
>> 		  throw new SoapFault( "Server", "Failed To Register:  
>> '$serial_number'." );
>> 		}
>> 	}
>>
>> $server = new SoapServer( "protection.wsdl" );
>>
>> $server->addFunction( "IsRegistered" );
>> $server->addFunction( "Register" );
>>
>> $server->handle();
>> ?>
>>
>>
>>
>> <?xml version ='1.0' encoding ='UTF-8' ?>
>> <definitions name='Protection'
>>   targetNamespace='http://myCompany.net/Protection'
>>   xmlns:tns='http://myCompany.net/Protection'
>>   xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
>>   xmlns:xsd='http://www.w3.org/2001/XMLSchema'
>>   xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
>>   xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
>>   xmlns='http://schemas.xmlsoap.org/wsdl/'>
>>
>> <message name='submitRegistration'>
>>   <part name='serial_number' type='xsd:string'/>
>> </message>
>> <message name='getSubmitRegistrationResponse'>
>>   <part name='Result' type='xsd:boolean'/>
>> </message>
>>
>> <message name='checkRegistration'>
>>   <part name='serial_number' type='xsd:string'/>
>> </message>
>> <message name='getCheckRegistrationResponse'>
>>   <part name='Result' type='xsd:boolean'/>
>> </message>
>>
>> <portType name='ProtectionPortType'>
>>   <operation name='Register'>
>>     <input message='tns:submitRegistration'/>
>>     <output message='tns:getSubmitRegistrationResponse'/>
>>   </operation>
>>
>>   <operation name='IsRegistered'>
>>     <input message='tns:checkRegistration'/>
>>     <output message='tns:getCheckRegistrationResponse'/>
>>   </operation>
>> </portType>
>>
>> <binding name='ProtectionBinding' type='tns:ProtectionPortType'>
>>   <soap:binding style='rpc'
>>     transport='http://schemas.xmlsoap.org/soap/http'/>
>>
>>   <operation name='Register'>
>>     <soap:operation soapAction='urn:myCompany_protection#Register'/>
>>     <input>
>>       <soap:body use='encoded' namespace='urn:myCompany_protection'
>>         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
>>     </input>
>>     <output>
>>       <soap:body use='encoded' namespace='urn:myCompany_protection'
>>         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
>>     </output>
>>   </operation>
>>
>>   <operation name='IsRegistered'>
>>     <soap:operation  
>> soapAction='urn:myCompany_protection#IsRegistered'/>
>>     <input>
>>       <soap:body use='encoded' namespace='urn:myCompany_protection'
>>         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
>>     </input>
>>     <output>
>>       <soap:body use='encoded' namespace='urn:myCompany_protection'
>>         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
>>     </output>
>>   </operation>
>>
>> </binding>
>>
>> <service name='ProtectionService'>
>> <port name='ProtectionPort' binding='tns:ProtectionBinding'>
>> <soap:address location='http://localhost/~Eric/protection/ 
>> protectionSoapServer.php'/>
>> </port>
>> </service>
>>
>> </definitions>
>>
>> -- 
>> PHP Soap Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
> 
> 
> -- 
> PHP Soap Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Strange-%27Procedure-Not-Present%27-error-tf3084041.html#a13767119
Sent from the Php - Soap mailing list archive at Nabble.com.

-- 
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Kernel Newbies]     [PHP Database]     [Yosemite]

  Powered by Linux