2010-03-16 15 views
7

PHP और SOAP के बारे में कई प्रश्न हैं। लेकिन मुझे मेरी स्थिति पर जवाब नहीं मिला है।PHP और SOAP। बदलें लिफाफा

तो। मैं इसके लिए PHP सोप क्लाइंट और डब्ल्यूएसडीएल का उपयोग करता हूं। वस्तु इस भेजता है:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.site.com"><SOAP-ENV:Body> 

लेकिन मैं इस की जरूरत है:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body> 

प्रश्न। मैं मानक PHP वर्ग SoapClient के साथ यह कैसे कर सकता हूं?

धन्यवाद।

+0

मुझे लगता है कि इसका मतलब है कि आपका डब्लूएसडीएल गलत है? क्या आपने एसओएपी सर्वर टुकड़ा भी बनाया था? – Clutch

+0

नहीं, डब्ल्यूएसडीएल सही है, क्योंकि अन्य लाइब्रेरी (सी # के लिए ActiveX नियंत्रण) इसके साथ काम करता है और सही नामस्थान भेजता है। मैं SOAP-server नहीं बदल सकता। मुझे सेवा कार्यों तक पहुंचने के लिए इसका इस्तेमाल करने की ज़रूरत है। – Oleg

+0

यदि आपको लगता है कि यह आपकी एसओएपी सेवा के साथ संवाद करने में कोई समस्या पैदा कर रहा है, तो यह गलत धारणा हो सकती है। आपकी त्रुटि आपके संदेश में गुम गुणों से संबंधित हो सकती है, जैसा कि अभी मेरे साथ हुआ है। – bytespider

उत्तर

5

मैं php.net

<?php 
class MSSoapClient extends SoapClient { 

    function __doRequest($request, $location, $action, $version) { 
     $namespace = "http://tempuri.com"; 

     $request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$namespace.'"', $request, 1); 
     $request = preg_replace('/<ns1:(\w+)/', '<$1', $request); 
     $request = str_replace(array('/ns1:', 'xmlns:ns1="'.$namespace.'"'), array('/', ''), $request); 

     // parent call 
     return parent::__doRequest($request, $location, $action, $version); 
    } 
} 

$client = new MSSoapClient(...); 
?> 

अनुरोध में इस कोड को परिवर्तित लिफाफा में जवाब खोज करते हैं। और एएसपी SOAP सर्वर की आवश्यकता है।

संबंधित मुद्दे