PDA

View Full Version : آموزش: ارسال آرایه بدون نام و بدون محدودیت طول به وب سرویس و دریافت آرایه اینچنینی از آن



fa_karoon
چهارشنبه 25 دی 1392, 08:41 صبح
سلام دوستان
این موضوع رو خیلی تو سایت های مختلف جستجو کردم اما به نتیجه ای نرسیدم تا اینکه با تست و بررسی های خودم به جواب رسیدم نمونه کد رو براتون می ذارم:
اگه می خواید آرایه به ورودی تون بفرستید و یه آرایه هم خروجی بگیرید قسمت complextype و register رو اینجوری باید تعریف کنید:


$server->wsdl->addComplexType(
'outQuery',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array(
'ref' => 'SOAP-ENC:arrayType',
'wsdl:arrayType' => 'xsd:int[]'
)
)
);

$server->register(
'Query', // Method Name
array('user' => 'xsd:string','pass' => 'xsd:string','msgIds'=>'tns:outQuery'), //Input Parameters
array('return' => 'tns:outQuery'), // Output Parameters
$ns, // Namespace
$ns . '#Query', // SOAPAction
'rpc', // Style
'encoded', // Use
'Get specific user info' // Documentation
);


به قسمت 'msgIds'=>'tns:outQuery' برای ورودی آرایه توجه کنید.
-------------------
برای اینکه خروجی رو هم یه آرایه ی بدون نام و بدون محدودیت طول بتونید تعریف کنید از همون complextype بالا می تونید استفاده کنید

برای رجیسترش هم در کد قبل به قسمت خروجیش که نوشته 'return' => 'tns:outQuery' باید دقت کنید.
تابع query مون هم می تونه این شکلی باشه:


function Query($user,$pass,$msgIds)
{

$queryIds = implode(',', $msgIds);

$sql = "SELECT status FROM trafficWHERE id='?' AND id in(?)";
$res = $db->doQuery($sql, array($info['id'], $queryIds));

foreach ($res as $row) {

$result[]=$row;

}
return $result;

}

البته این یه نمونه تستی هست ممکنه تابعمون خیلی پیچیده تر از این حرف ها باشه.
سمت کلاینت هم می تونید اینجوری صداش بزنید و خروجی رو چاپ کنید:


$msgIds=array(7384233,7384234,7396959);
$parameters = array('user' => '123','pass' =>'123','msgIds' => $msgIds);
$result =$client->call('Query', $parameters);
foreach ($result as $item) {
echo $item .'<br />';
}

امیدوارم مفید بوده باشه، موفق باشید
----------
پاورقی این پست در ابتدا اشکال داشت و تو دات نت اضافه نمی شد، اما بعد حل مشکل این پست هم اصلاح شد با خیال راحت کد رو استفاده کنید.

masiha68
جمعه 27 دی 1392, 09:03 صبح
دقیقا منظورت ار یه ارایه ی نامحدود چیه ؟ چون الان من به این ارایه نیاز دارم
اینجا رو ببین : http://barnamenevis.org/showthread.php?436892-%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA-%D8%A7%D8%B1%D8%A7%DB%8C%D9%87-%D9%87%D8%A7&p=1955349#post1955349
و اینکه این کدها رو کجا باید وارد کرد!!!

fa_karoon
شنبه 28 دی 1392, 08:15 صبح
منظورم از آرایه ی نامحدود تعداد عناصر آرایه هست. /// تو پست اول هم گفتم که کجاها این کدها رو وارد کنید اولی هاش مربوط به کد سمت سرور هست و کد آخر مربوط به کد سمت کلاینت. توجه کنید این وب سرویس هست ها! شاید با کاری که شما می خواید تو اون لینکی که نوشتید انجام بدید فرق کنه