วันเสาร์ที่ 1 สิงหาคม พ.ศ. 2552

การเพิ่ม Plug-in XML Schema ใน NetBeans


ในการดาวน์โหลด Java JDK พ่วงกับ NetBeans นั้นเรามักจะพบว่า Netbeans จะไม่ได้มีฟังก์ชันการใช้งานครบตามที่เราต้องการ เช่น ไม่มีฟังก์ชันทำให้เราสร้างเอกสาร XML Schema ได้ จริงๆ แล้วเราสามารถเพิ่ม Plug-in ใน NetBeans ได้ วิธีการนั้นสามารถทำได้ดังนี้

1. คลิกเลือกเมนู Tools > Plugins



















2. เลือกแท็บ Available Plugins จากนั้นคลิกที่คอลัมน์ Name เพื่อเรียงลำดับชื่อจากมากไปหาน้อย













3. คลิกเลือกที่จะติดตั้ง XML Schema and WSDL








4. คลิกปุ่ม Install







5. จากนั้นจะมีหน้าต่าง NetBeans IDE Install ซึ่งบอกว่า plugin XML Schema and WSDL จะถูกติดตั้ง ให้คลิก Next

















6. จากนั้นให้คลิกช่อง I accept … และคลิกปุ่ม Install




















7. จากนั้นให้คลิกปุ่ม Finish




















8. ทดสอบโดยการเปิดเมนู New File แล้วเลือก Category “XML” ตอนนี้จะพบว่ามีเมนูสำหรับสร้างเอกสาร XML Schema






วันอังคารที่ 17 กุมภาพันธ์ พ.ศ. 2552

เว็บเซอร์วิสคืออะไร

อินเทอร์เน็ต ได้ทำให้การสื่อสาร ข้อมูลระหว่างมนุษย์เป็นไปได้อย่างรวดเร็วและสะดวก ซึ่งได้มีผลกระทบต่อหลายวงการ อย่างเช่น ในการศึกษานั้น ทำให้ผู้เรียนสามารถศึกษาสิ่งต่าง ๆ ได้จากสื่ออิเลคทรอนิกส์ซึ่งสามารถเข้าถึงได้ผ่านอินเตอร์เน็ต ในการทำธุรกิจ ทำให้เจ้าของผลิตภัณฑ์ พันธมิตรคู่ค้า ตลอดจนลูกค้า มีการสื่อสารและทำงานร่วมกัน ไม่ว่าจะอยู่ในสาขาอาชีพใด การติดต่อสื่อสารและทำงานร่วมกันระหว่างองค์กรนั้นจำเป็นต้องเกิดขึ้น ในอดีตที่ผ่านมาองค์กรต่าง ๆ มักจะประสบปัญหาจากการทำงานร่วมกันโดยใช้แอพพลิเคชันต่างๆ ที่ถูกพัฒนามาจากหลากหลายแพลตฟอร์ม หลากหลายระบบปฏิบัติการ หลากหลายภาษา และถึงแม้ว่าองค์กรต่างๆ สามารถที่จะเชื่อมต่อแอพพลิเคชันต่างๆ เข้าด้วยกันได้ แต่การทำเช่นนั้นก็มีค่าใช้จ่ายที่สูง และมีความซับซ้อนมาก ด้วยเหตุนี้เองที่ทำให้มีความต้องการมาตราฐานกลาง เพื่อทำให้การติดต่อสื่อสารและทำงานร่วมกันองค์กรง่าย และรวดเร็วมากขึ้น มาตราฐานกลางนั่นก็คือเว็บเซอร์วิส

เว็บเซอร์วิส (Web Services) เป็นการ "บริการ" ที่เป็นระบบซอฟต์แวร์ที่ออกแบบมาเพื่อสนับสนุนการทำงาน ระหว่างคอมพิวเตอร์กับคอมพิวเตอร์ผ่านระบบเครือข่าย โดยที่ภาษาที่ใช้ในการติดต่อสื่อสารระหว่างคอมพิวเตอร์ ซึ่งก็คือภาษาเอกซ์เอ็มแอล (XML) ตัวอย่างเช่น การบริการในการเช็คราคาหุ้นของตลาดหุ้นหลาย ๆ ที่และอ่านข่าวจากแหล่งข่าว ๆ หลายที่โดยให้เฉพาะข่าวของบริษัทที่ผู้ขอใช้บริการสนใจ ผู้ให้บริการเว็บเซอร์วิสหนึ่งอาจจะเป็นผู้ขอบริการเว็บเซอร์วิสอื่น ยกตัวอย่างเช่น เว็บเซอร์วิสที่ให้บริการข้อมูลก่อนการซื้อขายหุ้น อาจจะเป็นผู้ขอใช้บริการของเว็บเซอร์วิสที่ให้บริการการให้ข่าว

ถึง แม้ว่าจะมีเทคโนโลยีอื่นอย่างเช่น DCOM และ RMI ที่ทำให้โปรแกรมและโปรแกรมสามารถคุยกันได้ แต่เทคโนโลยีเหล่านี้มีข้อจำกัดในส่วนของแพลตฟอร์มหรือภาษาที่โปรแกรมจำเป็น จะต้องใช้ตรงกัน ในทางตรงกันข้าม เว็บเซอร์วิสทำให้โปรแกรมที่พัฒนาด้วยภาษาที่แตกต่างกันหรือพัฒนาบนแพลตฟอร์ มที่แตกต่างกันสามารถคุยกันได้ ความสามารถของเว็บเซอร์วิสที่ทำให้โปรแกรมต่างภาษาต่างแพลตฟอร์มต่างอุปกรณ์ อิเล็กทรอนิกส์คุยกันได้นั้น เป็นจุดแข็งของเว็บเซอร์วิส ที่สามารถจะเชื่อมบริการหลายๆอันเข้าด้วยกัน แนวความคิดนี้ได้ถูกนำมาวางแผนและนำเสนอมาตรฐานที่จะทำให้เว็บเซอร์วิส ติดต่อกันได้อย่างมีประสิทธิภาพเช่น การใช้เอกสารภาษา WSDL (Web Services Description Language) ซึ่งเป็นภาษา XML ประเภทหนึ่ง WSDL (Web Services Description Language) ที่มาอธิบายการเรียกใช้เว็บเซอร์วิสซึ่งเปรียบเสมือนการอ่านคู่มือการใช้งาน โปรแกรมนั่นเอง แต่ทว่ามีข้อแตกต่างกันตรงที่ไม่เฉพาะมนุษย์เท่านั้นที่สามารถเข้าใจคู่มือ นั่น โปรแกรมที่สามารถอ่านเอกสารภาษา XML เข้าใจสามารถที่จะเข้าใจเอกสาร WSDL ได้เช่นกัน ซึ่งจากคุณสมบัตินี้ช่วยทำให้การเรียกใช้เว็บเซอร์วิสเป็นไปได้อย่าง อัตโนมัติ

นอก จาก XML จะถูกใช้ในการเป็นภาษาในการอธิบายการเรียกใช้เว็บเซอร์วิสแล้ว XML ยังเป็นภาษาที่ใช้ในการบันทึกข้อมูลระหว่างผู้ให้บริการและผู้ขอใช้การบริ การเว็บเซอร์วิส รูปแบบของข้อมูล XML ที่ใช้ในการติดต่อนี้เรียกว่าSOAP (Simple Object Access Protocol) เนื่องจากข้อมูลที่ติดต่ออยู่ในรูปแบบ XML ทำให้โปรแกรมต่าง ๆ สามารถติดต่อกันได้ ถึงแม้ว่าอาจจะถูกพัฒนาและเรียกใช้บนแพลตฟอร์มที่แตกต่างกัน หรือใช้ภาษาที่แตกต่างกันในการพัฒนา ทั้งนี้เนื่องจาก XML เป็นภาษาอักขระ (text) ซึ่งระบบปฎิบัติการทุกระบบสามารถเข้าใจ นอกจากนี้การที่ XMLมีแท๊ก (tag) และรูปแบบโครงสร้างที่อธิบายข้อมูลด้วยตัวมันเอง ทำให้การเข้าใจและการจัดการข้อมูล SOAP messages นั้นสามารถทำได้โดยโปรแกรมและช่วยทำให้การติดต่อระหว่าง ผู้ให้บริการและผู้ใช้เว็บเซอร์วิสเป็นไปได้อย่างอัตโนมัติ

แต่ อย่างไรก็ตามเว็บเซอร์วิสไม่จำเป็นจะต้องส่งข้อความในรูปแบบ SOAP เท่านั้น หากเป็นซอฟต์แวร์ที่ส่งข้อมูล XML โดยใช้ Internet Protocol จะถือว่าเป็นเว็บเซอร์วิสเช่นเดียวกัน แต่จะอยู่ในประเภท REST Web Service

เนื้อหาของบันทึกปรากฎโดยผู้เขียนคนเดียวกัน (อ กานดา) ที่

http://chatpong.exteen.com/20050814/entry-1

http://gotoknow.org/blog/krunapon/14438

http://gotoknow.org/blog/xmlws/234640

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

การแปลงไฟล์ XML ให้เป็น HTML โดยใ้ช้ XSL และ PHP

บ่อยครั้งที่ข้อมูล XML ดูยากเพราะเป็นตัวอักขระล้วน ดังนั้นผู้พัฒนาโปรแกรมจึงต้องการนำเสนอข้อมูลที่ดูง่ายกว่าเช่นในรูปแบบ HTML เราสามารถเขียนไฟล์ XSL และแปลงข้อมูลโดยพัฒนาโปรแกรม PHP ได้

เช่น เราต้องการแปลงข้อมูลในไฟล์ allResults.xml ให้เป็นตารางในไฟล์ HTML ดังแสดงในรูปที่ 1 และรูปที่ 2

รูปที่ 1



รูปที่ 2

ในการแปลงข้อมูลนั้นมีได้หลายวิีธี
1) อาจจะเขียนไฟล์ XSL ที่ไปดึงข้อมูลจาก allResults.xml โดยตรงก็ได้
2) ใช้ XML parser เพื่อดึงข้อมูลจาก allResults.xml แล้วเก็บไว้ในไฟล์ results.xml เพื่อให้เขียนไฟล์ XSL ได้ง่ายขึ้น

<?php
// โค้ดนี้ใช้วิธีที่ 2 ซึ่งใช้ XML parser เพื่อดึงข้อมูลจาก allResults.xml
// แล้วเก็บไว้ในไฟล์ results.xml เพื่อให้เขียนไฟล์ XSL ได้ง่ายขึ้น

// เขียน XML declaration ในไฟล์ xml results.xml
$xml_result = "";
$xml_result .= "";

// อ่านข้อมูลจากไฟล์ allResults.xml
$xml = simplexml_load_file("allResults.xml");

// เขียนข้อมูลของอิลิเมนต์ Theater ลงในไฟล์ results.xml
foreach ($xml->GetTheatersAndMoviesResult->Theater as $theater) {
$xml_result .= '';
$xml_result .= htmlspecialchars($theater->Name);
$xml_result .= '
';
$xml_result .= htmlspecialchars($theater->Address);
$xml_result .= '
';
}
$xml_result .="
";

// บันทึกข้อมูลลงไปในไฟล์
$fp = fopen('results.xml','w');
$write = fwrite($fp,$xml_result);
fclose($fp);

// เริ่มทำการแปลงโดยสร้างออปเจตก์ DOMDocument และ XSLTProcessor
$doc = new DOMDocument();
$xsl = new XSLTProcessor();

$xsl_filename = "results.xsl";

// โหลดข้อมูลจากไฟล์ XSL
$doc->load($xsl_filename);

// ระบุว่าให้ใช้ XSLTProcessor สำหรับออปเจกต์ DOM ที่สร้างขึ้นมา
$xsl->importStyleSheet($doc);

$xml_filename = "results.xml";

// โหลดข้อมูลจากไฟล์ XML
$doc->load($xml_filename);

// แสดงผลที่ได้จากการแปลงข้อมูล
echo $xsl->transformToXML($doc);
?>

// ไฟล์ XSL

การเรียกเว็บเซอร์วิสโดยใช้ 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

วันจันทร์ที่ 5 พฤษภาคม พ.ศ. 2551

การแก้ปัญหา XML Parsing Error: xml declaration not at start of external entity

ถ้าหากใช้ไฟล์ JSP เพื่อสร้างไฟล์ XML แล้วพบข้อความดังกล่าวเมื่อใช้เบราว์เซอร์ Firefox

XML Parsing Error: xml declaration not at start of external entity
Line Number 3, Column 1:
^

สาเหตุของปัญหา

XML declaration ไม่ใช่เป็นบรรทัดแรกของไฟล์ XML

แนวทางในการแก้ปัญหา

ลบบรรทัดว่างในไฟล์ XML ก่อนที่จะถึงบรรทัดที่มีส่วนของ XML declaration

วิธีการแก้ปัญหา

1. ในที่นี้สมมุติว่าใช้ Tomcat5 เป็นซอฟต์แวร์ที่รันเซิรฟ์เวอร์ ให้ไปที่ี่ไดเรกทอรี %TOMCAT_HOME%/conf/

2. เข้าไปดูที่ไฟล์ web.xml แล้วหาอิลิเมนต์ servlet ของ jsp เช่น

<servlet>

<servlet-name>jsp</servlet-name>

<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

<init-param>

<param-name>fork</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

<param-name>xpoweredBy</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>3</load-on-startup>

</servlet>






3. เพิ่ม อิลิมเนต์ เพื่อลบช่องว่างหรือบรรทัดว่างออกไปก่อนในตำแหน่งหลังจากตัวแท็กปิด อันสุดท้าย

<servlet>

<servlet-name>jsp</servlet-name>

<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

<init-param>

<param-name>fork</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

<param-name>xpoweredBy</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

<param-name>trimSpaces</param-name>

<param-value>true</param-value>

</init-param>

<load-on-startup>3</load-on-startup>

</servlet>



       


4. ปิดและเปิด Tomcat เซิร์ฟเวอร์ใหม่

อ้างอิง
http://forum.java.sun.com/thread.jspa?threadID=556549&messageID=2728991

วันเสาร์ที่ 26 เมษายน พ.ศ. 2551

การแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายด้วย XSL และ PHP

บ่อยครั้งที่ข้อมูลที่เรามีอยู่ในรูปแบบ XML ซึ่งอาจจะได้มาจากการเรียกใช้เว็บเซอร์วิส หรือรูปแบบมาตรฐานของข้อมูลที่เราได้รับมา แต่เรามักจะพบว่าการอ่านข้อมูล XML นั้นไม่ค่อยง่ายเพราะมีแต่ตัวอักษร และหลายครั้งที่เราต้องการแปลงข้อมูลเหล่าีนี้อยู่ในรูปแบบของเว็บเพจเพื่อแ สดงให้คนอื่นดูด้วย

เราสามารถแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายขึ้นด้วย XSL และ PHP

ตัวอย่างเช่น หากเรามีไฟล์ allResults.xml ที่เราได้รับจากการเรียก Yahoo Search ด้วยคำสำคัญ "Kanda Saikaew" ซึ่งถ้าหากเราดูแล้วจะพบว่ามีข้อมูลที่ซ้อนกันหลายชั้นและดูค่อนข้างจะสลับซับซ้อนดังแสดงในรูป

















ถ้าหากเราต้องการเพียงแ่ค่ชื่อของเว็บเพจและลิงก์ไปที่เว็บเพจนั้นเราก็สามาร ถทำได้โดยการคัดกรองเอาแต่ข้อมูลที่เราต้องการก่อนโดยการเขียนโปรแกรม XML Parser ด้วยภาษา PHP ดังนี้


<?php

$xml = simplexml_load_file('allResults.xml');

$xml_result = "<?xml version='1.0'?><results>";

$xml_result .="<name>Kanda Saikaew</name>";

foreach ($xml->Result as $result) {

$xml_result .= '<result><title>';

$xml_result .= htmlspecialchars($result->Title);

$xml_result .= '</title><url>';

$xml_result .= htmlspecialchars($result->Url);

$xml_result .= '</url></result>';

}

$xml_result .= "</results>";



$fp = fopen('results.xml','w');



$write = fwrite($fp,$xml_result);

fclose($fp);

?>




เราก็จะได้ไฟล์ results.xml



ซึ่งดูง่ายกว่าไฟล์แรกที่เรามี แต่ถ้าหากเราต้องการทำให้เป็นตารางในรูปแบบของเว็บเพจ เราก็จะเขียนไฟล์ results.xsl


<?xml version='1.0'?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>

<xsl:output method="html"/>

<xsl:template match="/results">

<html>

<head><title>Search Result by Yahoo</title></head>

<body>

<h1>Search Result for <xsl:value-of select="name"/></h1>

<table border="1">

<tr><th>Title</th><th>Url</th></tr>

<xsl:for-each select="result">

<tr><td><xsl:value-of select="title"/></td>

<td><a href="{url}"><xsl:value-of select="url"/></a></td></tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>






และเขียนโค้ด PHP เพื่ออ่านและแปลงข้อมูลจาก results.xml โดยอาศัยรูปแบบของการแสดงข้อมูลที่ระบุไว้ใน results.xsl ให้เป็น results.html


<?php



$doc = new DOMDocument();

$xsl = new XSLTProcessor();



$xsl_filename = "results.xsl";



$doc->load($xsl_filename);

$xsl->importStyleSheet($doc);



$xml_filename = "results.xml";



$doc->load($xml_filename);

echo $xsl->transformToXML($doc);



?>



แล้วเราก็จะได้ผลลัพธ์ที่ดูง่ายดังแสดงในรูปนี้







วันอาทิตย์ที่ 20 เมษายน พ.ศ. 2551

การใช้ PHP5 เรียกเว็บเซอร์วิสแบบ SOAP

ภาษา PHP เป็นภาษาที่เหมาะสมในการพัฒนาเว็บแอปพลิเคชัน เนื่องจากเป็นภาษาที่ง่าย เรียนรู้ได้เร็ว และสามารถนำมาใช้ได้ฟรี การเรียกใช้เว็บเซอร์วิสด้วยภาษา PHP จึงเป็นที่นิยม ภาษา PHP เวอร์ชันปัจจุบันคือ PHP5 ซึ่งมีความสามารถในการสนับสนุนการเรียกใช้เว็บเซอร์วิสในตัวโดยไม่ต้องดาวน์ โหลดเครื่องมืออะไรเพิ่มเติม ซึ่งจะทำให้ง่ายกว่าการที่ต้องไปดาวน์โหลดเครื่องมืออย่างเช่น NuSOAP ซึ่ง อัปเดตล่าสุดในปี ค.ศ. 2005 อีกทั้งไม่ได้มีกลุ่มผู้ใช้อย่างมากเหมือนกับ SOAP extension ของ PHP5

ใน PHP5 มี SOAP extension ที่ทำให้การเรียกใช้เว็บเซอร์วิสแบบ SOAP ง่ายขึ้นโดยการใช้คลาส SoapClient

ขั้นตอนวิธีการมีดังต่อไปนี้

1) หากเราต้องการเรียกใ้ช้เว็บเซอร์็วิสแบบ SOAP ใดเราก็ต้องรู้ที่อยู่ของเอกสาร WSDL ของเว็บเซอร์วิสนั้นก่อน เช่น

$client = new SoapClient($wsdl);

ถ้าหากว่าพบปัญหา Class 'SoapClient' not found ให้เพิ่มบรรทัดนี้ในไฟล์ php.ini

extension=php_soap.dll

ซึ่งถ้าหากใช้ระบบปฏิบัติการ Windows ไฟล์ php.ini อยู่ที่ไดเรกทอรี c:\windows

2) จากนั้นใช้ฟังก์ชัน _soapCall เพื่อเรียกใช้เมธอดที่เราต้องการโดยที่จะต้องระบุอินพุตพารามิเตอร์ในรูปแบบอาร์เรย์ เช่น

$result = $client->__soapCall($methodName, array($methodArguments));

3) ถ้าหากเราเรียกใช้เว็บเซอร์วิสที่พัฒนาโดยใช้ Microsoft .NET จะต้องมีการระบุ SOAP Action ในอาร์กิวเมนต์ของฟังก์ชัน __soapCall เช่น

$result = $client->__soapCall($methodName, array($methodArguments), array('soapaction' => $soapAction));

4) ถ้าหากเราเรียกใช้เว็บเซอร์วิสที่พัฒนาโดย Microsoft .NET จะได้ผลลัพธ์ที่อยู่ในรูปออปเจตก์ที่ประกอบด้วยอิลิเมนต์ที่มีชื่อตรงกับอิล ิเมนต์เอาต์พุตตามที่ระบุในเอกสาร WSDL เช่น

echo $result->outputElemName;

เราลองมาดูตัวอย่างของการเรียกใช้เว็บเซอร์วิส ปตท (http://www.pttplc.com/pttinfo.asmx) ซึ่งพัฒนาเป็นเว็บเซอร์วิสแบบ SOAP โดยใช้ C#.NET ด้วยโปรแกรมที่เขียนโดยภาษา PHP ดังนี้




<?php

// ที่อยู่ของเอกสาร WSDL ของเว็บเซอร์วิส ปตท");
$wsdl = 'http://www.pttplc.com/pttinfo.asmx?WSDL';

// สร้างออปเจกต์ SoapClient เพื่อเรียกใช้เว็บเซอร์วิส
$client = new SoapClient($wsdl);


// เมธอดที่ต้องการเรียกใช้ CurrentOilPrice
$methodName = 'CurrentOilPrice';



// อินพุตพารามิเตอร์ของเมธอด CurrentOilPrice คือ
// Language ซึ่งเราตั้งค่าให้เป็น TH ถ้าหากต้องการแสดงผลเป็นภาษาไทย
$params = array('Language'=>'TH');

// ระบุค่าของ SOAP Action URI
$soapAction = 'http://www.pttplc.com/ptt_webservice/CurrentOilPrice';

// ใช้ฟังก์ชัน _soapCall ในการเรียกเมธอดที่ระบุ
// ต้องระบุพารามิเตอร์และ SOAP Action
$objectResult = $client->__soapCall($methodName, array('parameters' => $params), array('soapaction' => $soapAction));

// จะต้องดูค่าฟิลด์ที่ชื่อตรงกับชื่อของอิลิเมนต์ที่ระบุใน
// Output Message ซึ่งในที่นี้ก็คือ
// CurrentOilPriceResult
echo $objectResult->CurrentOilPriceResult;
?>



ซึ่งเราก็จะได้ผลลัพธ์ดังรูปที่แสดงต่อไปนี้








อ้างอิงจาก

PHP: SOAP - Manual http://th.php.net/soap

PHP: SoapClient->__soapCall Manual http://th.php.net/soap_soapclient_soapcall


This blog entry was modified from the blog entry by the same author which is at http://gotoknow.org/blog/xmlws/161546