मुझे PHP कोड लिखने की आदत है, लेकिन अक्सर ऑब्जेक्ट-ओरिएंटेड कोडिंग का उपयोग नहीं करते हैं। अब मुझे एसओएपी (एक ग्राहक के रूप में) के साथ बातचीत करने की आवश्यकता है और मैं वाक्यविन्यास अधिकार प्राप्त करने में सक्षम नहीं हूं। मुझे एक WSDL फ़ाइल मिली है जो मुझे SoapClient वर्ग का उपयोग करके एक नया कनेक्शन ठीक से स्थापित करने की अनुमति देती है। हालांकि, मैं वास्तव में सही कॉल करने और डेटा वापस पाने में असमर्थ हूं। मुझे निम्नलिखित (सरलीकृत) डेटा भेजने की आवश्यकता है:
- संपर्क आईडी
- संपर्क नाम
- सामान्य विवरण
- रकम
WSDL दस्तावेज़ में दो फ़ंक्शन परिभाषित हैं, लेकिन मुझे केवल एक (नीचे "FirstFunction") की आवश्यकता है। यहाँ वह स्क्रिप्ट है जो मैं उपलब्ध कार्यों और प्रकारों के बारे में जानकारी प्राप्त करने के लिए चलाता हूँ:
$client = new SoapClient("http://example.com/webservices?wsdl");
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
और यहाँ उत्पादन यह उत्पन्न होता है:
array(
[0] => "FirstFunction Function1(FirstFunction $parameters)",
[1] => "SecondFunction Function2(SecondFunction $parameters)",
);
array(
[0] => struct Contact {
id id;
name name;
}
[1] => string "string description"
[2] => string "int amount"
}
कहो कि मैं डेटा के साथ FirstFunction को कॉल करना चाहता हूं:
- संपर्क आईडी: 100
- संपर्क नाम: जॉन
- सामान्य विवरण: तेल का बैरल
- राशि: 500
सही सिंटैक्स क्या होगा? मैं सभी प्रकार के विकल्पों की कोशिश कर रहा हूं, लेकिन ऐसा प्रतीत होता है कि साबुन की संरचना काफी लचीली है इसलिए ऐसा करने के कई तरीके हैं। मैनुअल से यह पता नहीं लगा सका ...
अद्यतन 1: MMK से आजमाया हुआ नमूना:
$client = new SoapClient("http://example.com/webservices?wsdl");
$params = array(
"id" => 100,
"name" => "John",
"description" => "Barrel of Oil",
"amount" => 500,
);
$response = $client->__soapCall("Function1", array($params));
लेकिन मैं इस प्रतिक्रिया मिल: Object has no 'Contact' property
। जैसा कि आप आउटपुट में देख सकते हैं getTypes()
, एक struct
कहा जाता है Contact
, इसलिए मुझे लगता है कि मुझे किसी तरह स्पष्ट करने की आवश्यकता है कि मेरे मापदंडों में संपर्क डेटा शामिल है, लेकिन सवाल यह है: कैसे?
अद्यतन 2: मैंने भी इन संरचनाओं की कोशिश की है, एक ही त्रुटि।
$params = array(
array(
"id" => 100,
"name" => "John",
),
"Barrel of Oil",
500,
);
साथ ही साथ:
$params = array(
"Contact" => array(
"id" => 100,
"name" => "John",
),
"description" => "Barrel of Oil",
"amount" => 500,
);
दोनों मामलों में त्रुटि: ऑब्जेक्ट का कोई 'संपर्क' गुण नहीं है