PHP และ Java โค้ดในการเรียกใช้เว็บเซอร์วิสของ ปตท เพื่อดูรา้คาน้ำมัน


PHP Java Webservices .NET PTT Webservice

ข้อดีของเว็บเซอร์วิสคือสามารถทำให้โปรแกรมต่างภาษา ต่างแพลตฟอร์ม ติดต่อทำงานร่วมกันได้   เว็บเซอร์วิสหนึ่งที่พัฒนาโดยคนไทยคือเว็บเซอร์วิสของ ปตท ซึ่งอยู่ที่  http://www.pttplc.com/pttinfo.asmx  โดยที่มีเอกสารที่อธิบายเว็บเซอร์วิส (WSDL) อยู่ที่ http://www.pttplc.com/pttinfo.asmx?WSDL

่เว็บเซอร์วิสของ ปตท พัฒนาโดยใช้ Microsoft .NET แต่ เราสามารถที่จะเขียนโปรแกรมทั้งในภาษา Java และ ภาษา  PHP เพื่อดูราคาน้ำมันในปัจจุบันได้

// file call_pttws1.php 

<?
include("../nusoap/nusoap.php");
$wsdl = "http://www.pttplc.com/pttinfo.asmx?WSDL";
//initial soap action
$soapaction = "http://www.pttplc.com/ptt_webservice/CurrentOilPrice";
$lang ='EN';;
//$proxyhost = "172.16.31.13";
//$proxyport = "80";
$client = new soapclient($wsdl,true);
//, $proxyhost, $proxyport);
$document = '<CurrentOilPrice xmlns="http://www.pttplc.com/ptt_webservice/">';
$document .= ' <Language>'.$lang.'</Language>';
$document .='</CurrentOilPrice>';
//create soap message
$mysoapmsg = $client->serializeEnvelope($document,'',array(),'document', 'literal');
//send soap message to soap server
$response = $client->send($mysoapmsg, $soapaction);
print_r($response);
?>

 

// ผลรัน

 php_pttws

// file CurrentOilPrice รันโดยใช้ NetBeans 5.5 และ Library JAX-WS 2.0

package callsoapws;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.Source;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.MimeHeaders;

/**
 * @author Kanda Runapongsa
 *
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class CurrentOilPrice {
    public void msgEnvelope(String[] args) throws Exception {
        MessageFactory messageFactory = MessageFactory.newInstance();

        // Create a message
        SOAPMessage message = messageFactory.createMessage();

        // Get the SOAP header and body from the message
        // and remove the header
        //SOAPHeader header = message.getSOAPHeader();
        SOAPBody body = message.getSOAPBody();
        // header.detachNode();

        // Create a SOAP factory
        SOAPFactory soapFactory = SOAPFactory.newInstance();
        SOAPBodyElement operationElem = body.addBodyElement(soapFactory
                .createName("CurrentOilPrice", "ns",
                        "http://www.pttplc.com/ptt_webservice/"));

        SOAPElement language = operationElem.addChildElement(soapFactory
                .createName("Language", "ns",
                        "http://www.pttplc.com/ptt_webservice/"));
        language.addTextNode("EN");

       
        MimeHeaders hd = message.getMimeHeaders();
        hd.addHeader("SOAPAction",
                "http://www.pttplc.com/ptt_webservice/CurrentOilPrice");

        message.saveChanges();
        System.out.println("REQUEST:");
        //Display Request Message
        displayMessage(message);

        System.out.println("\n\n");

        SOAPConnection conn = SOAPConnectionFactory.newInstance()
                .createConnection();
        SOAPMessage response = conn.call(message,
                "http://www.pttplc.com/pttinfo.asmx");

        System.out.println("RESPONSE:");
        //Display Response Message
        displayMessage(response);
    }

    public void displayMessage(SOAPMessage message) throws Exception {
        TransformerFactory tFact = TransformerFactory.newInstance();
        Transformer transformer = tFact.newTransformer();
        Source src = message.getSOAPPart().getContent();
        StreamResult result = new StreamResult(System.out);
        transformer.transform(src, result);
    }

    public static void main(String[] args) throws Exception {
        CurrentOilPrice clientApp = new CurrentOilPrice();
        clientApp.msgEnvelope(args);
    }
}

// ผลรันที่ได้ 

java_pttws 

หมายเลขบันทึก: 85425เขียนเมื่อ 21 มีนาคม 2007 17:49 น. ()แก้ไขเมื่อ 6 กันยายน 2013 17:53 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (17)
PHP สั้นง่ายน่าใช้จังเลยครับ :-)

ดีมากเลยครับ เคยหาอยู่แต่ไม่เจอ หุหุ

เคยใช้ php ได้พองูๆปลาๆ แต่ java ไม่ถนัดหรือเรียกว่าไม่เป็นเลยก็ว่าได้ค่ะ  อิอิอิ

  • โอโหทันสมัยจังเลยครับอาจารย์
  • ฮ่าๆๆๆๆ
น่าสนใจมากครับอาจารย์
ผมจะเอา JAX-WS 2.0 ไปไว้ใน lib ของอะไรคับ

ถ้าใช้ NetBeans 5.5 ก็สามารถคลิก Add Library และเลือก JAX-WS 2.0 ได้เลย

ถ้าใช้ Eclipse ก็สามารถเพิ่ม appserv-ws.jar และ javaee.jar  ในส่วนของ Add External Jar

อาจารย์สุดยอดจริงๆ คับผม
อาจารย์คะ  ลองเอา code ไปลอง run ดูแล้ว  มันเป็นหน้าขาว ๆ ว่าง ๆ แล้วก็โหลดนานมากเลยค่ะ  อย่างนี้เราต้องไปดูที่อะไรเหรอคะ?
เอาโค้ดไปรันดู ไม่เห็นได้เลยคิดว่าน่าจะขาดไฟล์ไปคะ เห็นมี include("../nusoap/nusoap.php"); ด้วยอ่ะ

คุณ

P
ชอบทำหน้าเป็นหมาสงสัย

ค่ะ  ลองหาไฟล์ nusoap.php โดยใช้  Google หรือจะลองดาวน์โหลดจาก http://dietrich.ganx4.com/nusoap/ หรือจาก http://gear.kku.ac.th/~krunapon/courses/178375/ ในส่วนของ Tools ค่ะ

 

คือว่าเพิ่งหัดเขียน webservice โดยใช้ netbeans 5.5 ซึ่ง copy code ไปแล้ว run ได้แต่อ่านภาษาไทยไม่ได้  รบกวนช่วยบอกด้วย  ขอบคุณมากๆๆๆๆๆ

รันได้แล้วค่ะ

ติดปัญหาเรื่อง SOAPAction ค้นหาในกูเกิล

เจอบล็อกอาจารย์ครับ

อ่าน ๆ ดูก็เจอที่ผิดในโปรแกรมของผม ^^

คือ ผมไม่ได้กำหนด SOAPAction ครับ

ขอบคุณครับ

อาจารย์ค่ะ ลองเอาโค้ดไปรันแล้ว ไม่เห็นมีอะไรขึ้นมาเลยค่ะ เป็นหน้าว่างๆๆ.....

ทำยังไงดีค่ะ หาวิธีมาหลายวันแล้ว T^T

อาจารย์ค่ะ ลองรันดูแล้วขึ้นแบบนี้ค่ะ

Warning: include(../nusoap/nusoap.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\test\untitled6.php on line 2

Warning: include() [function.include]: Failed opening '../nusoap/nusoap.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\test\untitled6.php on line 2

Fatal error: Class 'soapclient' not found in C:\AppServ\www\test\untitled6.php on line 9

หมายความว่ายังไงค่ะ

ขอบคุณค่ะอาจารย์

อาจารย์ครับ มีหนังสือ php+nusoap ไหมครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท