PHP
SOAP क्लाइंट
खोज…
वाक्य - विन्यास
- __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()
);
}
...
}