खोज…


वाक्य - विन्यास

  • __getFunctions () // सेवा के लिए कार्यों का रिटर्न सरणी (केवल WSDL मोड)
  • __getTypes () // सेवा के लिए प्रकार की रिटर्न सरणी (केवल WSDL मोड)
  • __getLastRequest () // अंतिम अनुरोध से XML लौटाता है ( trace विकल्प की आवश्यकता है)
  • __getLastRequestHeaders () // अंतिम अनुरोध से हेडर लौटाता है ( trace विकल्प की आवश्यकता है)
  • __getLastResponse () // अंतिम प्रतिक्रिया से एक्सएमएल लौटाता है ( trace विकल्प की आवश्यकता है)
  • __getLastResponseHeaders () // अंतिम प्रतिक्रिया से हेडर लौटाता है ( trace विकल्प की आवश्यकता है)

पैरामीटर

पैरामीटर विवरण
$ wsdl WSDL या NULL का URI यदि गैर-WSDL मोड का उपयोग कर रहा है
$ विकल्प SoapClient के लिए विकल्पों की सरणी। गैर-डब्ल्यूएसडीएल मोड को सेट करने के लिए location और uri आवश्यकता होती है, अन्य सभी विकल्प वैकल्पिक हैं। संभावित मूल्यों के लिए नीचे दी गई तालिका देखें।

टिप्पणियों

SoapClient वर्ग __call विधि से सुसज्जित है। इसे सीधे नहीं कहा जाना है। इसके बजाय यह आपको करने की अनुमति देता है:

$soap->requestInfo(['a', 'b', 'c']);

यह requestInfo SOAP विधि को कॉल करेगा।


संभावित $options मानों की तालिका ( कुंजी / मान युग्म का सरणी ):

विकल्प विवरण
स्थान SOAP सर्वर का URL। गैर-डब्ल्यूएसडीएल मोड में आवश्यक । URL को ओवरराइड करने के लिए WSDL मोड में उपयोग किया जा सकता है।
uri SOAP सेवा के लक्ष्य नाम स्थान। गैर-डब्ल्यूएसडीएल मोड में आवश्यक
अंदाज संभावित मान SOAP_RPC या SOAP_DOCUMENT । केवल गैर-WSDL मोड में मान्य है।
उपयोग संभावित मान SOAP_ENCODED या SOAP_LITERAL । केवल गैर-WSDL मोड में मान्य है।
soap_version संभावित मान SOAP_1_1 ( डिफ़ॉल्ट ) या SOAP_1_2
प्रमाणीकरण HTTP प्रमाणीकरण सक्षम करें। संभावित मान SOAP_AUTHENTICATION_BASIC ( डिफ़ॉल्ट ) या SOAP_AUTHENTICATION_DIGEST
लॉग इन करें HTTP प्रमाणीकरण के लिए उपयोगकर्ता नाम
कुंजिका HTTP प्रमाणीकरण के लिए पासवर्ड
छद्म मेजबान प्रॉक्सी सर्वर का URL
प्रॉक्सी पोर्ट प्रॉक्सी सर्वर पोर्ट
proxy_login प्रॉक्सी के लिए यूजरनेम
proxy_password प्रॉक्सी के लिए पासवर्ड
local_cert HTTPS क्लाइंट प्रमाणपत्र के लिए पथ (प्रमाणीकरण के लिए)
पदबंध HTTPS क्लाइंट सर्टिफिकेट के लिए पासफ़्रेज़
दबाव अनुरोध / प्रतिक्रिया को संपीड़ित करें। मूल्य का बिटमास्क है SOAP_COMPRESSION_ACCEPT या तो साथ SOAP_COMPRESSION_GZIP या SOAP_COMPRESSION_DEFLATE । उदाहरण के लिए: SOAP_COMPRESSION_ACCEPT \| SOAP_COMPRESSION_GZIP
एन्कोडिंग आंतरिक वर्ण एन्कोडिंग (TODO: संभव मान)
निशान बूलियन , FALSE लिए चूक। अनुरोधों के अनुरेखण को सक्षम करता है ताकि दोषों को पीछे हटाया जा सके। __getLastRequest() , __getLastRequestHeaders() , __getLastResponse() और __getLastResponseHeaders() उपयोग करने में सक्षम करता है।
classmap PHP कक्षाओं के लिए WSDL प्रकार का नक्शा। मान में WSDL प्रकारों के साथ एक सरणी होनी चाहिए और मानों के रूप में PHP वर्ग के नाम।
अपवाद बूलियन मूल्य। चाहिए SOAP त्रुटि अपवाद (प्रकार के SoapFault)।
कनेक्शन का समय समाप्त SOAP सेवा से कनेक्शन के लिए टाइमआउट (सेकंड में)।
typemap प्रकार की मैपिंग की सरणी। सरणी में निम्नलिखित कुंजियों के साथ कुंजी / मान जोड़े होना चाहिए: type_name , type_ns ( type_ns URI), from_xml (एक स्ट्रिंग पैरामीटर को स्वीकार करने वाली कॉलबैक) और to_xml (एक ऑब्जेक्ट पैरामीटर को स्वीकार करने वाली कॉलबैक)।
cache_wsdl कैसे (अगर सब पर) WSDL फ़ाइल कैश होना चाहिए। संभावित मान WSDL_CACHE_NONE , WSDL_CACHE_DISK , WSDL_CACHE_MEMORY या WSDL_CACHE_BOTH
उपभोक्ता अभिकर्ता User-Agent हेडर में उपयोग करने के लिए स्ट्रिंग।
stream_context एक संदर्भ के लिए एक संसाधन।
विशेषताएं SOAP_SINGLE_ELEMENT_ARRAYS , SOAP_USE_XSI_ARRAY_TYPE , SOAP_WAIT_ONE_WAY_CALLS
जिंदा रहो ( PHP संस्करण> = 5.4 केवल ) बूलियन मान। या तो Connection: Keep-Alive भेजें Connection: Keep-Alive शीर्ष लेख ( TRUE ) या Connection: Close शीर्ष लेख ( FALSE ) Connection: Close
ssl_method ( PHP संस्करण> = 5.5 केवल ) किस SSL / TLS संस्करण का उपयोग करना है। संभावित मान SOAP_SSL_METHOD_TLS , SOAP_SSL_METHOD_SSLv2 , SOAP_SSL_METHOD_SSLv3 या SOAP_SSL_METHOD_SSLv23

32 बिट PHP के साथ मुद्दा : 32 बिट PHP में, 32 बिट्स से अधिक संख्यात्मक तार जो स्वचालित रूप से xs:long द्वारा पूर्णांक में डाली जाती हैं xs:long परिणाम होगा 32 बिट सीमा को मारते हुए, इसे 2147483647 कास्टिंग करें। इसके चारों ओर काम करने के लिए, तार को __soapCall() में पास करने से पहले फ्लोट करने के लिए डालें।

डब्लूएसडीएल मोड

सबसे पहले, एक नई SoapClient ऑब्जेक्ट बनाएं, URL को WSDL फ़ाइल में पास करें और वैकल्पिक रूप से, विकल्पों की एक सरणी।

// Create a new client object using a WSDL URL
$soap = new SoapClient('https://example.com/soap.wsdl', [
    # This array and its values are optional
    'soap_version' => SOAP_1_2,
    'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
    'cache_wsdl' => WSDL_CACHE_BOTH,
    # Helps with debugging
    'trace' => TRUE,
    'exceptions' => TRUE
]);

फिर अपने SOAP तरीकों को कॉल करने के लिए $soap ऑब्जेक्ट का उपयोग करें।

$result = $soap->requestData(['a', 'b', 'c']);

गैर-डब्ल्यूएसडीएल मोड

यह WSDL मोड के समान है, सिवाय इसके कि हम NULL को WSDL फ़ाइल के रूप में पास करें और location और uri विकल्पों को सेट करना सुनिश्चित करें।

$soap = new SoapClient(NULL, [
    'location' => 'https://example.com/soap/endpoint',
    'uri' => 'namespace'
]);

Classmaps

PHP में SOAP क्लाइंट बनाते समय, आप कॉन्फ़िगरेशन सरणी में एक classmap कुंजी भी सेट कर सकते हैं। यह classmap परिभाषित करता है कि classmap परिभाषित किस प्रकार को डिफ़ॉल्ट StdClass बजाय वास्तविक कक्षाओं में मैप किया जाना चाहिए। आप ऐसा करना चाहते हैं इसका कारण यह है कि आप इन वर्गों पर स्वतः-पूर्णता और विधि कॉल प्राप्त कर सकते हैं, बजाय यह अनुमान लगाने के कि कौन से फ़ील्ड नियमित StdClass पर सेट हैं।

class MyAddress {
    public $country;
    public $city;
    public $full_name;
    public $postal_code; // or zip_code
    public $house_number;
}

class MyBook {
    public $name;
    public $author;

    // The classmap also allows us to add useful functions to the objects
    // that are returned from the SOAP operations.
    public function getShortDescription() {
        return "{$this->name}, written by {$this->author}";
    }
}

$soap_client = new SoapClient($link_to_wsdl, [
    // Other parameters
    "classmap" => [
        "Address" => MyAddress::class, // ::class simple returns class as string
        "Book" => MyBook::class,
    ]
]);

सहपाठी को कॉन्फ़िगर करने के बाद, जब भी आप एक निश्चित ऑपरेशन करते हैं जो एक प्रकार का Address या Book लौटाता है, तो SoapClient उस वर्ग को तुरंत हटा देगा, डेटा के साथ फ़ील्ड भरें और ऑपरेशन कॉल से इसे वापस कर दें।

// Lets assume 'getAddress(1234)' returns an Address by ID in the database
$address = $soap_client->getAddress(1234);

// $address is now of type MyAddress due to the classmap
echo $address->country;

// Lets assume the same for 'getBook(1234)'
$book = $soap_client->getBook(124);

// We can not use other functions defined on the MyBook class
echo $book->getShortDescription();

// Any type defined in the WSDL that is not defined in the classmap
// will become a regular StdClass object
$author = $soap_client->getAuthor(1234);

// No classmap for Author type, $author is regular StdClass.
// We can still access fields, but no auto-completion and no custom functions
// to define for the objects.
echo $author->name;

SOAP अनुरोध और प्रतिक्रिया ट्रेस करना

कभी-कभी हम यह देखना चाहते हैं कि SOAP अनुरोध में क्या भेजा और प्राप्त किया गया है। अनुरोध और प्रतिक्रिया में XML निम्नलिखित तरीके लौटाएगा:

SoapClient::__getLastRequest()
SoapClient::__getLastRequestHeaders()
SoapClient::__getLastResponse()
SoapClient::__getLastResponseHeaders()

उदाहरण के लिए, मान लें कि हमारे पास एक ENVIRONMENT स्थिरांक है और जब इस स्थिरांक का मान DEVELOPMENT लिए सेट हो जाता है, तो जब getAddress कॉल में कोई त्रुटि होती है, तो हम सभी जानकारी को प्रतिध्वनित करना चाहते हैं। एक समाधान हो सकता है:

try {
    $address = $soap_client->getAddress(1234);
} catch (SoapFault $e) {
    if (ENVIRONMENT === 'DEVELOPMENT') {
        var_dump(
            $soap_client->__getLastRequestHeaders()
            $soap_client->__getLastRequest(),
            $soap_client->__getLastResponseHeaders(),
            $soap_client->__getLastResponse()
        );
    }
    ...
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow