
ในการทำเว็บที่อยากให้มีการติดราคาน้ำมันในเว็บนั้นวิธีที่ง่ายๆที่สุดคือ การติดแบบ iframe แต่ก็จะประสบปัญหากับความไม่เข้ากันของ design เว็บกับราคาน้ำมัน จะเป็นการดีกว่าถ้าเราดึงข้อมูลแบบ web service มากรองเองและใส่ desing ที่เราต้องการเอง โดยใช้ CODE ไม่กี่บรรทัด
การใช้ PHP SOAP นั้นจำเป็นต้องเป็นเปิด extension=php_soap.dll ใน php.ini โดยโฮสทั่วไปก็น่าจะเปิดไว้อยู่แล้ว
ตัวอย่างข้อมูลที่ได้ (code ดึงข้อมูลปัจจุบัน)
PHP CODE จากตัวอย่าง
// สร้าง object
$client = new SoapClient("http://www.pttplc.com/webservice/pttinfo.asmx?WSDL", // URL ของ webservice
array(
"trace" => 1, // enable trace to view what is happening
"exceptions" => 0, // disable exceptions
"cache_wsdl" => 0) // disable any caching on the wsdl, encase you alter the wsdl server
);
// ตัวแปลที่ webservice ต้องการสำหรับ GetOilPriceResult เป็นวันเดือนปีและ ภาษา
$params = array(
'Language' => "en",
'DD' => date('d'),
'MM' => date('m'),
'YYYY' => date('Y')
);
// เรียกใช้ method GetOilPrice และ ใส่ตัวแปลเข้าไป
$data = $client->GetOilPrice($params);
//เก็บตัวแปลผลลัพธ์ที่ได้
$ob = $data->GetOilPriceResult;
// เนื่องจากข้อมูลที่ได้เป็น string(ในรูปแบบ xml) จึงต้องแปลงเป็น object ให้ง่ายต่อการเข้าถึง
$xml = new SimpleXMLElement($ob);
// attr PRICE_DATE , PRODUCT ,PRICE
//loop เพื่อแสดงผล
foreach ($xml as $key =>$val) {
// ถ้าไม่มีราคาก็ไม่ต้องแสดงผล เนื่องจากมีบางรายการไม่มีราคา
if($val->PRICE != ''){
echo $val->PRODUCT .' '.$val->PRICE.' บาท<br>';
}
}
จริงๆใน WEB SERVICE ของ PTT นั้นมีอยู่ 2 function ตาม link http://www.pttplc.com/webservice/pttinfo.asmx
สามารถเข้าไปดูว่าต้อง query อะไปได้ใน url ครับ
ตัวอย่าง SOURCE CODE
ขอบคุณครับ
ผมลองเขียนมั่งด้วย Python แล้วอยากได้ SimpleXMLElement มาก
http://mchayapol.blogspot.com/2017/04/python-web-service.html
555 แต่ละภาษาต้องเผชิญวิบากกรรมแตกต่างกันไปครับ
ขอบคุณครับ ใช้ทำโปรเจคพอดีเลย