04 Apr

การใช้ php ดึงราคาน้ำมันจาก webservice ของ ptt

ในการทำเว็บที่อยากให้มีการติดราคาน้ำมันในเว็บนั้นวิธีที่ง่ายๆที่สุดคือ การติดแบบ 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

Chayapol Moemeng says:

ขอบคุณครับ
ผมลองเขียนมั่งด้วย Python แล้วอยากได้ SimpleXMLElement มาก
http://mchayapol.blogspot.com/2017/04/python-web-service.html

supachet2526 says:

555 แต่ละภาษาต้องเผชิญวิบากกรรมแตกต่างกันไปครับ

suchi says:

ขอบคุณครับ ใช้ทำโปรเจคพอดีเลย

Leave a Reply

Your email address will not be published. Required fields are marked *