สวัสดีกันอีกรอบครับ สำหรับเพื่อนๆพี่ๆ
ที่ติดตามบทความต่างๆของทางเว็บ Sourcecode in Thailand :-) ที่มาของบทความนี้
เกิดจากความขี้เกียจ ของผม ที่จะต้องตัดข่าว จากเว็บต่างๆ มา Post ไว้ใน
เว็บ Sourcecode เพื่อให้ เพื่อนๆพี่ๆ ได้อ่าน และรับรู้ข่าวสารกัน คิดดูสิครับขนาดคนพิมพ์เองยังเมื่อยเลย
คน copy อย่างผมก็เมื่อยเหมือนกัน -_-!!! แต่ก็ ไม่ได้ copy มาอย่างเดียวนะครับ
ผมก็บอกแหล่งที่ผม copy มาด้วย เผื่อว่าใครที่สนใจ ข่าวอื่นๆ จะได้ไปเข้าเว็บนั้นๆ
ด้วย (แก้ตัวกันซะ อิอิ)
จากความขี้เกียจ ต่างๆนาๆ ที่ได้กล่าวมาข้างต้น
(อิอิ) ทำให้ผมเกิดแนวคิดถึงวิธีการในการสร้างโปรแกรม update ข่าวอัตโนมัติ
ซึ่งมีส่วนการทำงานอยู่ 3 ส่วนใหญ่ๆ ด้วยกัน คือ การดูดหน้าเว็บข่าวที่ต้องการ,
ตัดเอาเฉพาะข้อมูลที่ต้องการ และ สุดท้ายคือ การ Post ข้อมูลไปยัง Server
เพื่อให้เก็บข้อมูลลง Database และสำหรับบทความนี้ ผมจะกล่าวถึงเฉพาะการ
Post ข้อมูล
ก่อนอื่นก็อยากจะบอกกล่าวเกี่ยวกับการส่งข้อมูลไปยัง
Server side Script ต่างๆ (เช่น asp,php,jsp...) สามารถทำได้ 2 วิธีด้วยการ
คือ การ Post และการ Get ครับ ซึ่งมีวิธีการส่งมีความแตกต่างกันโดย การ Get
จะเป็นวิธีการสร้าง link โดยป้อน ข้อมูลที่ต้องการส่งไปด้วย ต่อท้ายไฟล์ปลายทาง
เช่น <a href="test.asp?web=sourcecode&article=delphi"
>Test</a> จากตัวอย่างจะเห็นได้ว่า เป็นการส่ง 2 ข้อมูล ไปยังไฟล์ชื่อ
test.asp ซึ่งประกอบด้วย web มีค่าเป็น sourcecode และ article มีค่าเป็น
delphi ส่วนวิธีการส่งอีกแบบคือการ Post ซึ่งจะเป็นจะต้องสร้าง Form ขึ้นมาเพื่อให้ผู้ใช้
กรอกข้อมูล แล้วทำการกดปุ่ม ส่งข้อมูลไปยัง Server (ดูตัวอย่างได้จาก หน้าแรก
ในส่วนของการรับข่าวสาร)
พอมาถึงจุดนี้แล้ว ผมก็อยากบอกกล่าวถึงความแตกต่างกันระหว่างการ
Post และ Get ครับ ดังจะเห็นว่าการ Get เป็นการส่งที่เป็นการ ต่อท้ายข้อมูลเข้าไป
หากเมื่อเรามีข้อมูลมากๆ เราจะไม่สามารถส่งด้วยวิธีนี้ได้ครับ และอีกอย่างคือ
การส่งแบบ Get ทำให้ผู้ใช้เห็นข้อมูลต่างๆได้ ผ่านทาง Webbrowser ซึ่งก็คงไม่ดีแน่นอน
ส่วนการส่งแบบ Post จะส่งข้อมูลได้มาก และหลายรูปแบบ (ทั้ง ข้อความ และ ไฟล์ข้อมูล)
หากจะมองกันจริงแล้ว การส่งทั้ง 2
แบบ จะขึ้นอยู่กับการนำมาใช้งานซะมากกว่า
พูดกันมาซะยาวคงเบื่อกันพอสมควร (ฮ่าๆๆ)
สำหรับผู้ที่พอรู้เรื่อง Post กับ Get คงไม่ต้องอ่านนะครับ เริ่มต้นสร้างโปรแกรม
กันเลยดีกว่าครับ โดยทำตามขั้นตอนดังนี้
1. ทำการสร้างเอกสาร Active Server
Page (ASP) โดยมีโค้ดดังนี้
<html> <head> <title>Sourcecode in Thai</title> <meta http-equiv="Content-Type" content="text/html; charset=Windows-874"> </head> <body> <%
strName=Request("name") strSurname=Request("surname")
Response.Write("Name ="&strName&"<br>")
Response.Write("Surname ="&strsurname)
%> </body> </html>
|
2. ทำการบันทึกไว้ path C:\InetPub\wwwroot\
ซึ่งเป็น Root ของ Home Directory ของ Web Server (เช่น IIS, PWS) ตั้งชื่อไฟล์เป็น
test.asp
3. เปิดโปรแกรม Delphi แล้วทำการออกแบบ
โดยใช้ Control ต่างๆอันได้แก่ Label, Edit, Button และ WebBrowser โปรแกรมดังรูป
***หมายเหตุ
ในการใช้งาน WebBrowser เราจำเป็นจะต้องทำการ Update TWebBrowser เสียก่อน
ซึ่งดูวิธีการได้จาก อัพเดด
TWebBrowser ให้กับ Delphi 5
4.กำหนด Property ต่างๆดังตาราง
Name |
Property |
Value |
Label1 |
Caption |
Name |
Label2 |
Caption |
Surname |
Edit1 |
Text |
[ว่าง] |
Edit2 |
Text |
[ว่าง] |
ฺButton1 |
Caption |
Submit Data |
Webbrowser1 |
align |
alRight |
5. เข้าไปในส่วนของ Code ให้ทำการเพิ่มบรรทัด
uses HTTPApp; ด้านล่างของบรรทัด implementation ตามตัวอย่าง
var Form1: TForm1;
implementation
uses HTTPApp; // Add this line
|
6.ทำการ ดับเบิ้ลคลิก ที่ Button1
แล้วป้อนโค้ดดังนี้
procedure TForm1.Button1Click(Sender: TObject);
var
EncodedDataString: String;
PostData: OleVariant;
Headers: OleVariant;
i: Integer;
begin
EncodedDataString :='name='+HTTPEncode(Edit1.Text)+'&'+
'surname='+HTTPEncode(Edit2.Text);
PostData :=VarArrayCreate([0,Length(EncodedDataString)-1],varByte);
for i:=1 to Length(EncodedDataString) do
PostData[i-1] :=Ord(EncodedDataString[i]);
Headers :='Content-Type: application/x-www-form-urlencoded'+#10#13;
WebBrowser1.Navigate('http://localhost/test.asp',
EmptyParam,
EmptyParam,
PostData,
Headers);
end;
|
7. ทดสอบโปรแกรม โดยกด F9 เพื่อ Run
โปรแกรม แล้วป้อนชื่อและนามสกุล ต่อจากนั้น ทำการคลิกปุ่ม Submit Data จะได้ผลดังรูป
ทิ้งทาย โค้ดดังกล่าวผมได้ทดสอบกับ asp เท่านั้นหนะครับ ผมยังไม่ได้ลองทดสอบกับ Server
side Script ตัวอื่นๆ หาใครทดสอบแล้วได้ผล ยังไงก็ช่วยเมล์มาบอกกันด้วยก็ดีครับ
แล้วพบกันใหม่กับ 9'M :-) |