2008-09-19 13 views
8

में डबल्यूएसडीएल करने के लिए एक इनकमिंग सोप अनुरोध निर्मित SOAP के लिए PHP विस्तार भेजे SOAPWSDL में XML Schema के खिलाफ अनुरोध में सब कुछ की पुष्टि नहीं करता। यह मूल संस्थाओं के अस्तित्व की जांच करता है, लेकिन जब आपके पास simpleType प्रतिबंधों की तरह कुछ जटिल होता है तो विस्तार उनके अस्तित्व को बहुत अधिक अनदेखा करता है।मान्य पीएचपी

में XML Schema के विरुद्ध SOAP अनुरोध को सत्यापित करने का सबसे अच्छा तरीका क्या है?

उत्तर

2

इस मामले पर चारों ओर से खुदाई की गई एक दृश्य के घंटे। न तो देशी PHP सोपसेवर नूर NuSOAP लाइब्रेरी कोई सत्यापन करता है। PHP सोपसेवर बस एक प्रकार का कलाकार बनाता है। उदाहरण यदि आप

<xsd:element name="SomeParameter" type="xsd:boolean" /> 

को परिभाषित करने और प्रस्तुत करने के लिए

<get:SomeParameter>dfgdfg</get:SomeParameter> 

आप हूँ php प्रकार बूलियन (सही)

NuSOAP बस स्ट्रिंग के लिए प्रत्येक भाग को डाले, हालांकि यह आसान प्रकारों को पहचानता है मिलती है:

nuSOAP डीबग लॉग से:

nusoap_xmlschema: processing typed element SomeParameter of type http://www.w3.org/2001/XMLSchema:boolean 

तो सबसे अच्छा तरीका है अपने आप को मान्य या XERCES

1

आम तौर पर एक डबल्यूएसडीएल के खिलाफ की पुष्टि नहीं करता। यदि डब्लूएसडीएल सही ढंग से डिज़ाइन किया गया है तो अनुरोध के निकाय को सत्यापित करने के लिए एक अंतर्निहित एक्सएमएल स्कीमा (एक्सएसडी) होना चाहिए। आपका एक्सएमएल पार्सर ऐसा करने में सक्षम होना चाहिए।

बाकी आप वेब सेवा और जो साबुन इंजन का उपयोग कर रहे कैसे लागू करने के लिए निर्भर है। मैं सीधे PHP इंजन से परिचित नहीं हूँ। डब्ल्यूएसडीएल/इंटरफ़ेस स्तर "सत्यापन" के लिए मैं आमतौर पर ऐसा कुछ करता हूं:

  1. क्या अनुरोध का निकाय ज्ञात अनुरोध प्रकार से मेल खाता है और क्या यह मान्य है (एक्सएसडी द्वारा)?
  2. संदेश इस संदर्भ में समझ बनाने करता है और मैं इसे एक ऑपरेशन/हैंडलर को मैप कर सकते हैं?
  3. यदि हां, तो यह
  4. अन्यथा संसाधन शुरू हो: त्रुटि
+0

जैसे कुछ XML पार्सर का उपयोग मैं प्रश्न को स्पष्ट करने के लिए संपादित करने के लिए joelhardi समाधान है। –

-3

कुछ समय पहले मैं PHP NuSOAP उपयोग करने के साथ a proof of concept वेब सेवा बनाने है। मुझे नहीं पता कि यह इनपुट को मान्य करता है, लेकिन मुझे लगता है कि यह करता है।

4

देशी PHP5 सोप libs इसके अलावा, मैं भी आपको बता सकता है कि न तो नाशपाती और न ही Zend साबुन libs वर्तमान में संदेशों के स्कीमा सत्यापन करेंगे। (मुझे दुर्भाग्यवश, किसी भी PHP SOAP कार्यान्वयन की जानकारी नहीं है।)

मैं क्या करूँगा एक्सएमएल संदेश DOMDocument ऑब्जेक्ट में लोड करें और स्कीमा के विरुद्ध सत्यापित करने के लिए DOMDocument के तरीकों का उपयोग करें।

-1

मैं सत्यापन के प्रदर्शन में कोई आसान तरीका खोजने के लिए सक्षम नहीं था और अंत में व्यापार तर्क में सत्यापन कोड था।