XML.com

XML.com
  Home | Resources | FAQs |
    
Home :: XML010

XML010: ติดต่อ Web Server จาก Application โดยตรง (Delphi)

ตัวย่างต่อไปนี้ จะเป็นตัวอย่างง่ายๆสำหรับการติดต่อกับ 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 ข้อมูลเพิ่มเติมจากเว็บเป็นต้น

 

Contact Us | Our Mission | Privacy Policy | Advertise With Us | Site Help
Copyright © 2002 Copy เค้ามาจาก www.xml.com จะได้ดูเหมือนๆกัน