|
ตัวย่างต่อไปนี้ จะเป็นตัวอย่างง่ายๆสำหรับการติดต่อกับ Webserver
จากโปรแกรม EXE ธรรมดา
ในบางครั้งเราพบว่าการควบคุม User ผ่านทางหน้าเว็บนั้นกระทำได้ลำบาก
เช่นการ ชำระเงินผ่านเว็บที่ User อาจทำธุกรรมซ้ำเป็นต้น การบังคับให้
User ทำตามที่เราต้องการผ่าน Application นั้นจะเป็นการง่ายกว่ากันมาก
แต่ในขณะเดียวกัน อาจจะต้องมีการติดต่อผ่านเว็บเซอร์เวอร์ด้วย วิธีการต่อไปนี้ถือ
เป็นวิธีที่น่าสนใจวิธีหนึ่ง
ตัวอย่างของข้อมูลในรูปของ XML
สมมุตให้เป็นข้อมูล XML ที่มีส่วน Header และ DATA อยู่ใน <TESTXML>
|
<?xml version="1.0" encoding="windows-874"
?>
<SPO>
<VERSION>1.5</VERSION>
<CAT>3</CAT>
<DATA>
<CAT ID="1">
<NAME>ทั่วไป</NAME>
<LEVEL>2</LEVEL>
</CAT>
<CAT ID="1">
<NAME>อาชญากรรม</NAME>
<LEVEL>2</LEVEL>
</CAT>
<CAT ID="1">
<NAME>การเงิน</NAME>
<LEVEL>1</LEVEL>
</CAT>
</DATA>
</SPO>
|
ข้อมูลข้างต้นนั้นสร้างโดยเป็น ไฟล์ xml ธรรมดาอยู่บน Web server
หรือสร้างมาจาก Script ก็ได้ ตัวอย่างในที่นี้สร้างโดยใช้ ASP http://www.thaixml.com/games/connect.asp
ตัวโปรแกรมที่เขียนขึ้นก็สามารถทำการติดต่อไปยัง File นี้ได้โดยตรงโดยใช้
Object ที่มีอยู่ใน Delphi 6 (หมายเหตุ โปรแกรมนี้เป็นส่วนหนึ่งเท่านั้น
ไม่สามารถทดลองใช้งานได้ เพียงแต่แสดงให้ดูเป็นตัวอย่าง)
|
procedure TForm3.Button1Click(Sender: TObject);
var x:integer;
Http1:TIdHTTP;
strRead:string;
strError:string;
DataElement:IXMLNode;
I,totalcat:integer;
UserFile : TextFile;
buffer : string;
version,cversion:string;
begin
cversion := '1.5';
//---- if registed then download lessons listing ---
if Form1.bRegistered then
begin
Form1.bConnected := False;
http1 := TIdHTTP.Create(nil); // สร้าง object HTTP
strRead:='';
try // ติดต่อกับ Web server จากโปรแกรมโดยตรง
strRead:=Http1.Get(strUrl+'games/connect.asp?level=1&cat=1&id='+Form1.userID);
except
on EIdSocketError do
begin // กรณีต่อไม่ได้
strError:='Internet Connection Error!!'+#13+#10;
strError := strError+' Please verify that your connection
to the internet is OK';
strError := strError +#13+#10+' And try again';
memo1.Text := ' Connection Error';
showmessage(strError);
http1.Free;
exit;
end;
end;
memo1.text :='connected';
// load xml data นำข้อมูลมาใช้งาน
Form1.XMLDoc.Active := False;
Form1.XMLDoc.XML.Text := strRead; // load เข้า DOM
form1.XMLDoc.Active := True;
totalcat := strtoint(Form1.XMLDoc.DocumentElement.ChildNodes.Nodes[1].NodeValue);
//ดึงข้อมูล
version := Form1.XMLDoc.DocumentElement.ChildNodes.Nodes[0].NodeValue;
if version <> cversion then
ShowMessage('New version '+version+' is now available for
download'+#13+#10+' at www.thaixml.com');
// ดึงออกมาเป็น Element
DataElement := Form1.XMLDoc.DocumentElement.ChildNodes.FindNode('DATA');
Form1.bConnected := True;
G1.Visible := True;
G1.Caption := 'Load New Lesson';
ComBoBox2.Visible := true;
//---- level ----
end; // if registered
end;
|
คงพอจะได้เห็นตัวอย่างแล้วนะครับ จะพบว่าโปรแกรมหลายๆ โปรแกรม
เช่น โปรแกรมป้องกัน Virus จะใช้วิธีนี้ในการติดต่อ กับ Webserver
เพื่อ Download ข้อมูลเพิ่มเติมจากเว็บเป็นต้น
|