บทนำ (Overview)
จากบทความที่แล้วเราสามารถสร้าง .jar ไฟล์ ที่สามารถเปิดโปรแกรมขึ้นมาใช้งานได้ทันที (Executable .jar) – How to create Executable jar file ต่อมา เราจะทดลองเขียน การส่งข้อมูลระหว่าง “Client” และ “Server” โดย “Server” จะรับค่าจาก “Client” และส่งกลับมาที่ “Client” อีกครั้ง โดยที่ฝั่ง “Client” จะเป็นโปรแกรมเขียนด้วย “Java” และ ฝั่ง “Server” จะเขียนด้วย “php” ซึ่งต้อง “run” บน “Web server”
การส่งข้อมูลจาก “Client” ไปยัง “Server” จะใช้โปรโตคอล “HTTP” ซึ่งใช้ “method” ของ “POST” ในการส่งข้อมูล เพราะฉะนั้น “Server” จะต้องรับข้อมูลจาก “Method” ของ “Post” ให้ได้ด้วยแล้วค่อยส่งกลับค่ามา
ขั้นตอน (Steps)
- เริ่มต้นที่ฝั่ง “Server” เขียนรับค่า “Method POST” จากนั้นส่งค่ากลับคืนโดยใช้ “echo”
<?php echo "Response from server : ".$_POST["username"]." ".$_POST["password"]; ?>
- ทดสอบเรียกใช้งานหน้าเพจบน “Web Server”
- จากนั้นมาเขียน “Java” สำหรับฝั่ง “Client” กันโดยให้รับค่า Username และ Password ของผู้ใช้และมีปุ่มสำหรับส่งค่าทั้ง 2 ยัง Server
//swing class for GUI import javax.swing.*; //class for listener import java.awt.event.ActionListener; import java.awt.event.ActionEvent; //Get string from URL import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class clsLogin { private JFrame frame; private JTextField txtUser, txtPass; private JButton cmdLogin; public void init(){ //สร้าง controls frame = new JFrame("Hello Login");//ชื่อหน้าต่าง frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); txtUser = new JTextField("Username"); txtPass = new JTextField("Password"); cmdLogin = new JButton("Login at Server-side"); cmdKeepPass = new JButton ("Keep password in memory"); //Set layout frame.getContentPane().setLayout(null); frame.setBounds(200, 200, 450, 300); txtUser.setBounds(50, 50, 200, 25); txtPass.setBounds(50, 75, 200, 25); cmdLogin.setBounds(50, 100, 200, 25); //บรรจุ Controls ลง Frame frame.add(txtUser); frame.add(txtPass); frame.add(cmdLogin); frame.setVisible(true);//ให้แสดงหน้าต่าง //สร้าง litener ให้กับปุ่ม cmdLogin.addActionListener(new ActionListener() { //เมื่อ Click ปุ่ม Login public void actionPerformed(ActionEvent arg0) { //String loginJson = jsonCreate(); JOptionPane.showMessageDialog(frame,login()); } private String login(){ URL url; try { url = new URL("http://192.168.202.128/pentest/testOT.php"); String Name = txtUser.getText(); String Surname = txtPass.getText(); String urlParameters = "username= " + Name + " &password=" + Surname; HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setInstanceFollowRedirects(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("charset", "utf-8"); conn.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length)); conn.setUseCaches (false); DataOutputStream wr = new DataOutputStream(conn.getOutputStream ()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); StringBuilder str = new StringBuilder(); String line; BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line = reader.readLine()) != null) { str.append(line); } conn.disconnect(); return str.toString(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } }); } public static void main(String[] args) { clsLogin obj = new clsLogin(); obj.init(); } }
- ทดสอบ “Run” โปรแกรม และกรอก “Username” และ “Password” จากนั้นคลิกปุ่ม “Login”