วันอาทิตย์ที่ 15 กุมภาพันธ์ พ.ศ. 2552

การเรียกเว็บเซอร์วิสโดยใช้ PHP

เว็บเซอร์วิสหนึ่งที่น่าสนใจในการเรียกใช้คือเว็บเซอร์วิสที่ให้การบริการเกี่ยวกับโรงภาพยนตร์ในอเมริกา ซึ่งคือเว็บเซอร์วิสที่ http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx โดยที่มีโอเปอเรชันหนึ่งซึ่งถ้าหากเราให้รหัสไปรษณีย์ (zipcode) และ รัศมีของระยะทางของโรงภาพยนตร์กับเมืองที่มีรหัสไปรษณีย์ดังกล่าว เว็บเซอร์วิสจะให้รายชื่อของโรงภาพยนตร์
และภาพยนตร์ที่กำลังฉายในโรงภาพยนตร์ดังกล่าว

ในโค้ดตัวอย่างนี้ สมมุติว่าเราต้องการทราบโรงภาพยนตร์ที่อยู่ในเมืองหรือใกล้เมือง Ann Arbor, Michigan ภายในระยะทาง 1 ไมล์ เราจะใส่ zipcode = 48105 และรัศมี = 1

<?php

// โค้ดต่อไปนี้ใช้ wso2 wsf/php ในการเรียกใช้เว็บเซอร์วิส

// ข้อความที่อยู่ใน SOAP request message ที่จะส่งไปให้เว็บเซอร์วิส
$requestPayloadString = <<<XML
<gettheatersandmovies xmlns="http://www.ignyte.com/whatsshowing">
<zipcode>48105</zipcode>
<radius>1</radius>
</gettheatersandmovies>
XML;

try {

//สร้างออปเจกต์ WSClient
$client = new WSClient(
array("to"=>"http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx",
"useSOAP" => "1.1",
// หากเรียกผ่านเน็ตเวิร์คของมหาวิทยาลัยจะต้องตั้งค่า proxy host และ proxy port
"proxyHost" => "202.12.97.116",
"proxyPort" => "8088"));

// สร้างออปเจกต์ WSMessage เพื่อจะใส่ข้อความใน Message และระบุ SOAPAction ของโอเปอเรชัน
// ที่เราต้องการเรียกใช้
$requestMessage = new WSMessage(
$requestPayloadString,
array("action" => "http://www.ignyte.com/whatsshowing/GetTheatersAndMovies"));


// ส่งข้อมูลและร้องขอการบริการจากเว็บเซอร์วิส
$responseMessage = $client->request($requestMessage);



} catch (Exception $e) {

if ($e instanceof WSFault) {
printf("Soap Fault: %s\n", $e->Reason);
} else {
printf("Message = %s\n",$e->getMessage());
}
}

// เขียนข้อมูล XML ที่ได้รับลงไปในไฟล์ allResults.xml
$fp = fopen('allResults.xml','w');
$write = fwrite($fp,$responseMessage->str);
fclose($fp);

?>

รูปข้างล่างนี้แสดงข้อมูลในไฟล์ allResults.xml

ไม่มีความคิดเห็น: