2011-12-02 10 views
7

जब मैं कुछ डेटा (php में साबुन क्लाइंट का उपयोग करके) में किसी फ़ंक्शन तक पहुंचने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिल रही है।Uncaught SoapFault अपवाद: [क्लाइंट] फ़ंक्शन इस सेवा के लिए मान्य विधि नहीं है

Uncaught SoapFault exception: [Client] Function function_nameis not a valid method for this service 

कोई मदद?

+1

वास्तविक त्रुटि है कि है? क्योंकि यदि ऐसा है तो मुझे लगता है कि आपने सेवा प्रदाता से एक टेम्पलेट फ़ाइल ली है, और 'function_name' नामक सेवा फ़ंक्शन पर कॉल करने का प्रयास किया है - जो किसी फ़ंक्शन का वास्तविक नाम होने की संभावना नहीं है। आप जिस फ़ंक्शन को कॉल कर रहे हैं उसके नाम से 'function_name' को प्रतिस्थापित करना है, यह केवल एक प्लेसहोल्डर है जो आपको यह दिखाने के लिए है कि फ़ंक्शन का नाम कहां जाएगा। सेवा प्रदाता संभवतः दस्तावेज प्रदान करता है। मेरा सुझाव है कि आप इसे पढ़ लें। अच्छी तरह। – DaveRandom

+0

हाय डेव प्रतिक्रिया के लिए धन्यवाद। यह मूल त्रुटि संदेश नहीं है। मैंने 'function_name' –

+0

के साथ वास्तविक फ़ंक्शन नाम को प्रतिस्थापित किया है, फिर भी, त्रुटि आपको बता रही है कि फ़ंक्शन का नाम उस सेवा के लिए मान्य नहीं है जिसे आप फिर से उपभोग करने की कोशिश कर रहे हैं दस्तावेज़ों की जांच करें और सुनिश्चित करें कि फ़ंक्शन का नाम मान्य है, और यदि यह है, तो सेवा प्रदाता से संपर्क करें। – DaveRandom

उत्तर

25

यदि आप ऐसे फ़ंक्शन को निष्पादित करना चाहते हैं जो SOAP नहीं ढूंढ पा रहा है - यह संभव है कि PHP ने wsdl फ़ाइल को कैश किया हो।

इस जोड़ें:

ini_set("soap.wsdl_cache_enabled", "0"); 

कैशिंग निष्क्रिय करने के लिए।

+0

मेरे लिए मदद करता है!धन्यवाद – Talisin

+0

आप मेरी जिंदगी सुरक्षित – tingfungc

+0

मैंने इस लाइन को जोड़ा, अभी भी वही त्रुटि मिल रही है, मुझे क्या करना चाहिए? – Saani

2

दो संभव समाधान:

  1. कोशिश करता है, तो समारोह वास्तव में वहाँ कोड का स्निपेट के साथ मौजूद है को देखने के लिए: PHP SoapClient request: not a valid method for this service
  2. इसके अलावा, एक बार आप उपलब्ध फ़ंक्शन कॉल की सूची प्रदर्शित की है, ध्यान रखना है कि अगर आपका डब्लूएसडीएल जावा एसओएपी सर्वर द्वारा उत्पन्न होता है, आपके पास "सेवा" नामक कई फ़ंक्शन हो सकते हैं (या उसी नाम के साथ)। केवल पहले व्यक्ति को PHP SOAP क्लाइंट द्वारा पहचाना और उपयोग किया जाएगा। आपको डब्लूएसडीएल में अपने सभी का मैन्युअल रूप से नाम बदलने की जरूरत है!
0

फ़ंक्शन के शीर्ष पर टिप्पणियों में पैरामीटर, रिटर्न प्रकार और वेब सेवा का तरीका जोड़ें। यह काम करेगा। मैंने अपने काम करने की कोशिश की।

/** 
* @param string the symbol of the stock 
* @return float the stock price 
* @soap 
*/ 
public function getPrice($symbol) 
{ 
    //...return stock price for $symbol 
} 
0

मुझे यह समस्या थी और अंततः मेरे PHP त्रुटि लॉग को जांचने का निर्णय लिया।

php.ini मेंalways_populate_raw_post_data = -1 सक्षम और सर्वर को पुनरारंभ करें।

मेरे PHP संस्करण 5.6.8

0

हमारे स्थिति यह अपवाद हुई जब PHP7 को PHP5.6 से उन्नयन में है। हमारे लिए डब्ल्यूएसडीएल कैश को अक्षम करने के लिए भी काम किया।

ini_set("soap.wsdl_cache_enabled", "0"); 

यह भी देखें: http://lornajane.net/posts/2015/soapfault-when-switching-php-versions