আমি পিএইচপি কোড লিখতে অভ্যস্ত, তবে প্রায়শই অবজেক্ট-ওরিয়েন্টেড কোডিং ব্যবহার করি না। আমার এখন এসওএপি (ক্লায়েন্ট হিসাবে) এর সাথে ইন্টারঅ্যাক্ট করতে হবে এবং সিনট্যাক্সটি সঠিকভাবে পেতে সক্ষম নই। আমি একটি ডাব্লুএসডিএল ফাইল পেয়েছি যা আমাকে সোপক্লিয়েন্ট ক্লাস ব্যবহার করে সঠিকভাবে একটি নতুন সংযোগ স্থাপন করতে দেয়। তবে, আমি আসলে সঠিক কল করতে এবং ডেটা ফেরত পেতে অক্ষম। আমাকে নিম্নলিখিত (সরলীকৃত) ডেটা প্রেরণ করতে হবে:
- যোগাযোগ আইডি
- যোগাযোগের নাম
- সাধারণ বিবরণ
- পরিমাণ
ডাব্লুএসডিএল ডকুমেন্টে দুটি ফাংশন সংজ্ঞায়িত করা হয়েছে তবে আমার কেবলমাত্র একটি (নীচে "ফার্স্ট ফাংশন") প্রয়োজন। উপলব্ধ ক্রিয়াকলাপ এবং ধরণের তথ্য পেতে আমি যে স্ক্রিপ্টটি চালাচ্ছি এটি এখানে:
$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"
}
বলুন আমি ডেটা সহ ফার্স্ট ফাংশনে কল করতে চাই:
- যোগাযোগ আইডি: 100
- যোগাযোগের নাম: জন
- সাধারণ বিবরণ: তেল ব্যারেল
- পরিমাণ: 500
সঠিক বাক্য গঠন কী হবে? আমি সব ধরণের অপশন চেষ্টা করে দেখছি তবে এটি সাবান কাঠামো বেশ নমনীয় তাই এটি করার অনেকগুলি উপায় রয়েছে। ম্যানুয়াল থেকে এটি বের করতে পারেনি ...
আপডেট 1: এমএমকে থেকে নমুনা চেষ্টা:
$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,
);
উভয় ক্ষেত্রে ত্রুটি: বস্তুর কোনও 'পরিচিতি' সম্পত্তি নেই `