الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

درس Web Services في الدلفي و بريزم

بدأه زكيري عبد العالي في 20 يونيو 2009 · 25 رد · 7,473 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

**************************************************************

ملاحظ : انا لم اقم الا بجمع وتنقية الدروس من عدة مواقع بها معومات متبعثرة راجيا من الله ان يستفيد منها اخواننا المسلمين

ماقمت الا بجمع و ترتيب و تجريب اكواد و تصحيح وتغييرات طفيفة اذا حقوق هذه الموسوعة لكل الروابط التي ساكتبها في اخرالدرس

**************************************************************

Web Services مقدمة

مبدئياً خدمات ويب أو ما يطلق عليها اسم Web Service هي عبارة عن برا مج دلفي عاديةولكنها ليس لها واجهة المقصود هنا بالواجهة هي واجهة الاستخدام

طريقة العمل

تتلخص وظيفة استخدام ال web services بإمكانية الاستفادة من ال Methods الموجودة بال web server داخل برنامج الزبون وباستخدام برتوكول ال SOAP وهو اختصار ل Simple Object Access Protocol يتم نقل ال Result من ال web Services server إلى ال Client بعد تحويلها إلى ال XML - extensible Markup Language حيث تنقل عبر برتوكول ال HTTP إلى جهاز الزبون والهدف من استخدامه هو تسهيل وصول ال Data من ال web server إلى ال Client من خلال ال firewalls والبيئات المختلفة إذ أن جميع بيئات الشبكات تدعم برتوكول ال HTTP والذي يعمل على البورت 80 . ولا تختلف لغة ال XML عن ال HTML إذ تستخدم نفس القواعد في ال HTML وهي مجموعة من الElements وال Attributes مثل ال </> <> لكن تتميز بمرونة اكبر .

اييستطيع المستخدمون الوصول الى هذه المعلومات بواسطة Interface معين ، حيث يتلق أمر أو طلب Request ثم يستجيب لها عن طريق http protocol اعتماداً على معايير ْXML والتي تؤمن بالتالي أن يفهمها أو تفهمها ملايين البرامج والأجهزة ومواقع الإنترنت ببساطة تامة .

وواحد من أشهر التطبيقات لذلك هي خدمات ويب الخاصة بالطقس ، حيث تطلب منها الطقس في مدينة معين لتعود لك بدرجة الحرارة مثلاً ، وكل ذلك أن يكون لها واجهة استخدام اضافة إلى أنها تكون موجودة على الإنترنت

وكما أسلفنا فخدمات ويب تعتمد على XML كمعيار لتمثيل البيانات ، ما يعني أن جميع البرامج في جميع الأماكن قادرة على التعامل معها وفهمها بغض النظر عن نظام التشغيل أو لغة البرمجة.

وبما أن الخدمات برامج كما أسلفنا سابقاً ، فإن السيرفر الذي سيستضفيها لا بد أن يدعم هذا النوع من البرمجة ، وإذا أردت أن تجرب خدمتك الخاصة على جهازك الشخصي فتأكد من أنك قم بتحميل و اب سرفر معين IIS و Apache او واب سرفر انشاءته بنفسك.

خادم الويب و الدلفي

نستطيع من خلال الدلفي الوصل او برمجة خادم الويب بعده طرق و كل الطرق توجب توفر بعض الادةات او المكونات .

  • شبكة TCP/IP
  • خادم HTTP له القدرة على فهم طريقة عمل خادم الويب
  • محرك CGI او ISAPI و الذي يقوم بمعالجه المعلومات الصادرة من خادم الويب
  • تطبيق او منضومة تعتبر الزبون الذي يسال خادم الويب ثم يعرض النتائج

كما نعلم ان كل انضم التشغيل تحتوي على شبكة TCP-IP

اما عن خادم HTTP فمكننا استعمال احد المكونات في الدلفي لتكن مثلا مكونات البروتكول SOAP

SOAP= HTTP + XML=Simple Object Access Protocol

post-1034-1245507273_thumb.png

post-1034-1245507533_thumb.png

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 25 يونيو 2009 في 18:20

#2

اعمال تطبيقية

1-المثال الاول

كتابه خدمة وبب ترسل الكلمة

اقتباس
HelloWorld

اول ما نبدأ له هو انشار مجلد خيالي على مسوى خادم المويب IIS

1-Creating a virtual directory

Fig01_WindowsComponentWizard.PNG

بعد تثبية ننشأ iis المجلد Delphi2009WS كمايلي

Fig02_NewVirtualDirectory.PNG

Fig03_VirtualDirName.PNG

ننشا مجلد حقيقي في المسار

Delphi2009WS

C:\Inetpub\wwwroot

ثم نعرف المجلد الخيالي وذلك بربطه مع الحقيقي عن طريق

Fig04_PhysicalDirName.PNG

ودائما على مستوى IIS

نفعل الخاصية Execute (such as ISAPI applications or CGI)

Fig05_Permissions.PNG

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 21 يونيو 2009 في 20:45

#3

بســم الله الـرحمــن الرحيــم

2-برمجة خدمه الويب

اذا نفتح مشروع جديد في الدلفي نختار Other ثم من القائمه تختار

Web Service ->SOAP Server Application

post-1034-1245606611_thumb.jpg

#4

و الان وبما اننا سننشأ تطبيق ويب لابد ان يكون اما ISAPI او CGI او .NET

وانا اخترت CGI وسيكون لنا درس عليها ان شاء الله في هذه الموسوعة

نحدد

CGI application كما يلي

Fig07_NewAppType.PNG

ثم yes لتاكيد عملية انشاء منضومة soap

Fig08_CreateInterface.PNG

و الان سيطلب منا ادخال اسم خدمة الويب اذا يجب وضع اسم مناسب لعمل هذه الخدمت

وفي مثالنا نكتب

WebService1

post-1034-1245607253_thumb.jpg

#5

نغير اسم المشروع الى Delphi2009WS_1.dproj

،حفضه في المجلد

Source

post-1034-1245607702_thumb.jpg

#6

service1Intf.pas

يعتبر هذا الملف الوحدة التي نجد فيها interface الخاصة بالمشروع و التي يجب ان نعرف او نصرح فيها عن جميع الوظائف المستعملة في المشروع

 

[color= #009900;]{ [color= #000000; font-weight: bold;]Interface invocable Iservice1 [color= #009900;]}

unit service1Intf[color= #339933;];

[color= #000000; font-weight: bold;]interface

uses InvokeRegistry[color= #339933;], Types[color= #339933;], XSBuiltIns[color= #339933;];

type

 

  [color= #009900;]{ Les interfaces invocables doivent dériver de IInvokable [color= #009900;]}

  Iservice1 [color= #339933;]= [color= #000000; font-weight: bold;]interface[color= #009900;](IInvokable[color= #009900;])

  [color= #009900;][[color= #0000ff;]'{E4F6BF94-1745-4498-BBA2-9F6003FBED4E}'[color= #009900;]]

  [color= #000000; font-weight: bold;]function ShwoHelloWorld[color= #009900;]([color= #009900;])[color= #339933;]:string[color= #339933;];  stdcall[color= #339933;];

    [color= #009900;]{ Les méthodes de l[color= #0000ff;]'interface invocable ne doivent pas utiliser la }

[color= #0000ff;]    { convention d'appel par défaut [color= #339933;]; stdcall est conseillé [color= #009900;]}

  [color= #990000;]end[color= #339933;];

implementation

initialization

  [color= #009900;]{ Les interfaces invocables doivent être recensées [color= #009900;]}

  InvRegistry[color= #339933;].RegisterInterface[color= #009900;](TypeInfo[color= #009900;](Iservice1[color= #009900;])[color= #009900;])[color= #339933;];

[color= #990000;]end[color= #339933;].

service1Impl.pas

هي الوحدة التي نكتب فيها اكواد الوظائف .

,في نقوم بimplementation للواجهة service1Intf

 

[color= #009900;]{ Fichier d[color= #0000ff;]'implémentation invocable pour Tservice1 implémentant Iservice1 }

[color= #0000ff;]unit service1Impl;

[color= #0000ff;]interface

[color= #0000ff;]uses InvokeRegistry, Types, XSBuiltIns, service1Intf;

[color= #0000ff;]type

[color= #0000ff;]  { Tservice1 }

[color= #0000ff;]  Tservice1 = class(TInvokableClass, Iservice1)

[color= #0000ff;]  public

[color= #0000ff;]       function ShwoHelloWorld():string;  stdcall;

[color= #0000ff;]  end;

[color= #0000ff;]implementation

[color= #0000ff;]    function Tservice1.ShwoHelloWorld():string;

[color= #0000ff;]    begin

[color= #0000ff;]        Result:= 'Hello World[color= #0000ff;]';

[color= #0000ff;]    end;

[color= #0000ff;]initialization

[color= #0000ff;]{ les classes invocables doivent être recensées  }

[color= #0000ff;]   InvRegistry.RegisterInvokableClass(Tservice1);

[color= #0000ff;]end.

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 21 يونيو 2009 في 21:26

#7

تجربة المثال الاول

ننقل الملف الناتج

الى Delphi2009WS_1.exe

C:\Inetpub\wwwroot\Delphi2009WS

نكتب في IE

http://localhost/Delphi2009WS/Delphi2009WS_1.exe

و الان اصبحت الخدمت جاهزة

لم يبقي الا كيف الاستفادة من هذه الخدمة .

post-1034-1245609241_thumb.jpg

#8

4-برمجة الزبون

ان تطبيق الزبون اما ان يكون تطيب ويب او وندوزعادي ويتم استغلال مجوموعة الميتود او الوظافة التي كتبناها في خدمه الويب باتباع الخطوات التالية

أ*-ننشأ تطبيق جدبد VCL به نافذة واحدة

*-نضيف الكلاسات او الوحدات التالي بواسطتها نتصل بالخادم

Fig18_NewItems_WSDLImporter.PNG

بعد الموافقة سممكننا الدلفي من انشاء WSDL Importer wizard والتي يجب اعطاءها رابطة الخدمة التي انشئناها ولتكن

http://localhost/Delphi2009WS/Delphi2009WS_1.exe

هذا مسار الملف التنفيذي لتطبق الخدمة لكن نحن بحاجة الى الملف الناتج من هذه التعلمة الذي قام بانشائه SOAP اذن نظيف الى الرابطة

http://localhost:8080/Delphi2009WS/Delphi2009WS_1.exe/wsdl/Iservice1

حيث ان Iservice1 هو اسم الخدم التي انشاناها سايقا

Fig19_WSDLImporter_URL.PNG

نضغط على زر التالي نتحصل على نافذه تعرض لنا كل كل الوذظائف الموجودة في الخدمة و في مثالنا استعملنا سوى واحدة كما نرى الكود سورس الذي كتبه الدلفي اليا في هذه العملية .

post-1034-1245696057_thumb.jpg

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 22 يونيو 2009 في 21:46

#9

و في الاخير نكتب الكود التالي الذي سيستدعي الوظيفة في زر نضعه على الفورم

 

unit Unit3[color= #339933;];

[color= #000000; font-weight: bold;]interface

uses

  Windows[color= #339933;], Messages[color= #339933;], SysUtils[color= #339933;], Variants[color= #339933;], Classes[color= #339933;], Graphics[color= #339933;], Controls[color= #339933;], Forms[color= #339933;],  Dialogs[color= #339933;], StdCtrls
[color= #339933;];

type

  TForm3 [color= #339933;]= [color= #000000; font-weight: bold;]class[color= #009900;](TForm[color= #009900;])

    Button1[color= #339933;]: TButton[color= #339933;];

    Edit1[color= #339933;]: TEdit[color= #339933;];

    procedure Button1Click[color= #009900;](Sender[color= #339933;]: TObject[color= #009900;])[color= #339933;];

  [color= #000000; font-weight: bold;]private

    [color= #009900;]{ Déclarations privées [color= #009900;]}

  [color= #000000; font-weight: bold;]public

    [color= #009900;]{ Déclarations publiques [color= #009900;]}

  [color= #990000;]end[color= #339933;];

[color= #000000; font-weight: bold;]var

  Form3[color= #339933;]: TForm3[color= #339933;];

implementation[color= #009900;]{[color= #000033;]$R [color= #339933;]*.dfm[color= #009900;]}

uses Iservice11[color= #339933;];

 

procedure TForm3[color= #339933;].Button1Click[color= #009900;](Sender[color= #339933;]: TObject[color= #009900;])[color= #339933;];

begin

   edit1[color= #339933;].Text[color= #339933;]:=GetIservice1[color= #339933;].ShwoHelloWorld[color= #009900;]([color= #009900;])[color= #339933;];

[color= #990000;]end[color= #339933;];

 

[color= #990000;]end[color= #339933;].

هنا بحول الله قد اكمالنا اول مثال على خدمه الويب في الدلفي win32

يمكن ان نعمل على ISAPI كما ذكرة سابقا وهي بنفس الكريقة الا ان المتحصل عليه هو ملف dll

ولكن بالدلفي بريسم هي اسهل و اسرع لانه يعتمد على .NET

post-1034-1245696637_thumb.jpg

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 22 يونيو 2009 في 21:53

#10

بســم الله الـرحمــن الرحيــم

ب) - نفس المثال السابق مع بريزم

اولا نعدل في خصائص iis كي نستطيع العمل على مشروعنا خارج VS2008

اذا لا بد من تفعيل asp.net في iis

لاحظ الصورة 1

ثم نقوم بعمليه تسجيل asp.net باكتابة تعليمة دوس كالتالي

%Windir%/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -i

post-1034-1245917559_thumb.jpg

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 25 يونيو 2009 في 17:51

#11

انشاء خدمت الويب

نقوم بما هو موضح في الصورة اي انشاء مشرروع جديد من نوع خدمت ويب

post-1034-1245918541_thumb.jpg

#12

وكما تلاحظون ان vs2008 انشا البا الكود سورس مع مثال وهذا المثال هو نفسه الذي نحن بصدد انشاءه .

ولتجرية الصفحة وعرض نتيجه الميتود او الوضيفة HelloWorld

ننقر بالزر الايمن على الملف Service.asmx وننفذ التعليمة

عرض على المتصفح

post-1034-1245918928_thumb.jpg

post-1034-1245919100_thumb.jpg

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 25 يونيو 2009 في 11:38

#13

3-برمجة الزبون

نقوم بانشاء مشروع جديد من نوع ونداوز فورم كمايلي

post-1034-1245919523_thumb.jpg

#14

نظع زر و تكست بوكس وننقر مرتين على الزر لنصل الى الحدث Click

في هذا الحدث سنقوم باستدعاء الميتود التي انشاءناها في الخدمت وهي HelloWorld

لكن السؤال هو كيف سنصل اليها وهي في مشروع اخر و في جهاز اخر او في خدمت ويب لا نعرف الا url فقط

---------------------------------------------------------------------

انسى انك انت من انشاءة الخدمت

---------------------------------------------------------------------

اذ ماهو url الخاص بالخدمت انه في الصورة السابقة

http://localhost/service1/Service.asmx

لكن ماهذا اليست صفحه واب

الجواب لا لان F .net هو من حول الخدمت الى صفحة واب يراها الجميع

الا انه في الحقيقة هي ملف XML يحتوي على متود و ليس له واجهة كما ذكرنا سابقا

--------------------------------------------------------------------

نعم عرفنا مسار موقع الخدمت لكن كيف سنعرفها الى مشروعنا

مثل ما نعرف ملف dll لكن سنعرف خدمت فقط

التعليمتين متشابهتين

référencesبالنقر بالزر الايمن على

انضر

post-1034-1245920665_thumb.jpg

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 25 يونيو 2009 في 16:38

#15

الان نريد عرض ما ترجعه المتيتود في محتوي

textboxو ذلك بالضغط على الزر

نكتب

 

method MainForm[color= #339933;].button1_Click[color= #009900;](sender[color= #339933;]: [color= #990000;]System[color= #339933;].Object[color= #339933;]; e[color= #339933;]: [color= #990000;]System[color= #339933;].EventArgs[color= #009900;])[color= #339933;];

begin

    [color= #000000; font-weight: bold;]var o_service1 [color= #339933;]:= [color= #000000; font-weight: bold;]new Client_ws[color= #339933;].U_service1[color= #339933;].Service[color= #339933;];

    textBox1[color= #339933;].Text[color= #339933;]:= o_service1[color= #339933;].HelloWorld[color= #009900;]([color= #009900;])[color= #339933;];

[color= #990000;]end[color= #339933;];

كما تلاحظ اني عرفة الكائن او الشيء o_service1 و انشأته في ان واحد وذلك من الكلاس

U_service1 و الموجوده في مشروعنا هذا اذ

اسم المشروع . اسم الوحدة او الكلاس التي كتبنا اسمها عندما قمنا بالربط مع الخدمت

و بالتالي نتحص في الاخير على الميتود HelloWorld الموجودة في الخدمت .

post-1034-1245940109_thumb.jpg

#16

من المثال السابق تستنج ان الشكل العام للبنية خدت الويب هي

post-1034-1246137212_thumb.jpg

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 28 يونيو 2009 في 00:16

#17

قاءمة الروابط

http://www.laboiteaprog.com/article-36-1-delphi_web_service

http://www.jcolibri.com/articles/web/services_web/delphi_web_services/delphi_web_services.html

http://vb4arab.com/vb/showthread.php?t=420

http://blogs.embarcadero.com/pawelglowacki/2008/12/18/38624

المثال الثاني

لحد الان لم اجد خدمت ويب مجانية و تكون جيدة و فين اذللك سنمر الى الموضوع الثاني

ساترك الرد هكذا لحين اجد ما اكتبه

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 28 يونيو 2009 في 00:24

#18

الطريقة الثانية وبستعمال مكوناة INDY

في هذه الطريقة لا تعتبر خدمت الواب حسب الشرح السابق لكل من SAOP بكن بما انها تستعمل ملفات اكسمل + http فيمكن ان نحكم عنها بانها خدمت ويب كيف ذللك

ومتى نحتاج هذه الطريقة مثلا عندك برنا مجين مختلفين التطبيق الاول يقوم بعمليات الاضافة التغيير في القاعدة و البرنامج الثاني نجد به الة حاسبة تقوم باجراء الكثيير من الحسابات على المعطيات التي في القاعدة و لترجع لنا نتيجة في وقت عير معلوم اى حسب نوع العملية

يطلب منك كمبرمج ان تعرض ما يقوم به التطبيق الثاني في التطبق الاول

كيف تعمل

الحل

نضع ملف او جدول ثم استرحع المعلومات من واجهة التطبيق 2 و في التطبيق 2 اضع timer تعرض محتوى الجدول

نعم صحيح ولكن عندي افضل لاني استعمل الذاكرة و لا اخش تلف الملف او فقذ معلومة ما

اضيف خدمت الى التطبيق 2 ومن التطبق 1 اعرض نتيجتها

كيف ذلك

المثال الثالث

post-1034-1246186368_thumb.jpg

indy.rar

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 28 يونيو 2009 في 13:55

#19

برمجة الخدمة و الخادم

في هذا المثال سننشأ خادم ويب جديد ليس له علاقة ب iis او الاباش وليكن على المنفذ8081

العنوان هو

http://localhost:8081/

بعد وضع المكونات كما في الصورة الخاصة بالخادم ولال ننسا كتابى المنفد 8081 في الخاصية

defaultport :8081 للمكون IdHTTPServer1

  1. الهدف من هذا الكود هو قراءة الرقم الممر في url
  2. البحث في القاعدة
  3. ارسالة النتيجة في شكل اكسمل

 

procedure TForm3[color= #339933;].IdHTTPServer1CommandGet[color= #009900;](AContext[color= #339933;]:  TIdContext[color= #339933;];ARequestInfo[color= #339933;]: TIdHTTPRequestInfo
[color= #339933;]; AResponseInfo[color= #339933;]:  TIdHTTPResponseInfo[color= #009900;])[color= #339933;];

[color= #000000; font-weight: bold;]var

   vid[color= #339933;],str  [color= #339933;]: string[color= #339933;];

   vQuery [color= #339933;]:TADOQuery[color= #339933;];

begin

str[color= #339933;]:=[color= #0000ff;]''[color= #339933;];

  [color= #b1b100;]if  ARequestInfo[color= #339933;].Params[color= #339933;].[color= #990000;]Count [color= #339933;]>[color= #cc66cc;]0 then

      vid[color= #339933;]:=ARequestInfo[color= #339933;].Params[color= #339933;].Values[color= #009900;][[color= #0000ff;]'id'[color= #009900;]][color= #339933;];

      TRY

      vQuery [color= #339933;]:= TADOQuery[color= #339933;].Create[color= #009900;](nil[color= #009900;])[color= #339933;];

      vQuery[color= #339933;].Connection[color= #339933;]:=ADOConnection1[color= #339933;];

      vQuery[color= #339933;].SQL[color= #339933;].Text [color= #339933;]:= FORMAT[color= #009900;]([color= #0000ff;]'SELECT * FROM [table] WHERE id = %S'[color= #339933;],[color= #009900;][vid[color= #009900;]][color= #009900;])[color= #339933;];

          TRY

           vQuery[color= #339933;].Open[color= #339933;];

            str[color= #339933;]:= [color= #0000ff;]' <?xml version="1.0" standalone="yes"?>'[color= #339933;]+

            [color= #0000ff;]' <DATAPACKET Version="2.0">'[color= #339933;]+

            [color= #0000ff;]' <METADATA>'[color= #339933;]+

            [color= #0000ff;]' <FIELDS>'[color= #339933;]+

                [color= #0000ff;]' <FIELD attrname="id"       fieldtype="string"  WIDTH="15"/>  '[color= #339933;]+

                [color= #0000ff;]' <FIELD attrname="name"     fieldtype="string"  WIDTH="15"/> '[color= #339933;]+

                [color= #0000ff;]' <FIELD attrname="not"      fieldtype="string"  WIDTH="15"/> '[color= #339933;]+

            [color= #0000ff;]' </FIELDS>'[color= #339933;]+

            [color= #0000ff;]' </METADATA>'[color= #339933;]+

            [color= #0000ff;]' <ROWDATA>'[color= #339933;];

            [color= #b1b100;]while not vQuery[color= #339933;].Eof [color= #b1b100;]do

            begin

            str[color= #339933;]:= str [color= #339933;]+ FORMAT[color= #009900;](

                          [color= #0000ff;]' <ROW RowState="4"'[color= #339933;]+

                          [color= #0000ff;]' id="%S"' [color= #339933;]+

                          [color= #0000ff;]' name="%S"' [color= #339933;]+

                          [color= #0000ff;]' not="%S"' [color= #339933;]+

                          [color= #0000ff;]' />'[color= #339933;],[color= #009900;][vQuery[color= #339933;].FieldByName[color= #009900;]([color= #0000ff;]'id'[color= #009900;])[color= #339933;].AsString[color= #339933;],

                                 vQuery[color= #339933;].FieldByName[color= #009900;]([color= #0000ff;]'name'[color= #009900;])[color= #339933;].AsString[color= #339933;],

                                 vQuery[color= #339933;].FieldByName[color= #009900;]([color= #0000ff;]'not'[color= #009900;])[color= #339933;].AsString

                                [color= #009900;]]

                          [color= #009900;])[color= #339933;];

             vQuery[color= #339933;].[color= #990000;]Next[color= #339933;];

            [color= #990000;]end[color= #339933;];

            str[color= #339933;]:= str [color= #339933;]+[color= #0000ff;]' </ROWDATA></DATAPACKET>'[color= #339933;];

          EXCEPT ON E[color= #339933;]:Exception [color= #b1b100;]DO

           ShowMessage[color= #009900;](e[color= #339933;].Message[color= #009900;])[color= #339933;];

          [color= #990000;]END[color= #339933;];

      FINALLY

        AResponseInfo[color= #339933;].ContentText[color= #339933;]:=str[color= #339933;];

        vQuery[color= #339933;].close[color= #339933;];

        vQuery[color= #339933;].Free[color= #339933;];

     [color= #990000;]END[color= #339933;];

[color= #990000;]end[color= #339933;];

بهذا انتهينا من برمجة الخادم و الخدمت

لواردنا عرض النتيجة لابدا ان نقوم يقراءة الاكسمال الناتج وعرضه في شكل html في المتصفح مثلا

#20

برمجة الزبون

بعدوضع المكونات التي في الصور نقوم بوضع الكود التالي على الزر

الهدف

  1. قراءة الرقم المحرر من طرف المستخدم
  2. ارساله الى خادم الويب
  3. استقبال النتيجة الممثلة في شكل xml
  4. وضعها في memo
  5. وضعها فيclientdataset

 

procedure TForm3[color= #339933;].Button1Click[color= #009900;](Sender[color= #339933;]: TObject[color= #009900;])[color= #339933;];

[color= #000000; font-weight: bold;]var

  s [color= #339933;]: TMemoryStream[color= #339933;];

  AStream [color= #339933;]: TFileStream[color= #339933;];

begin

   s[color= #339933;]:=TMemoryStream[color= #339933;].Create[color= #339933;];

   TRY

      TRY

         idHTTP1[color= #339933;].Get[color= #009900;]([color= #0000ff;]'http://localhost:8081/?id='[color= #339933;]+edit1[color= #339933;].Text[color= #339933;],s[color= #009900;])[color= #339933;];

      EXCEPT ON E[color= #339933;]:Exception [color= #b1b100;]DO

      BEGIN

          showmessage[color= #009900;]([color= #0000ff;]'Connexion au serveur impossible!' [color= #339933;]+[color= #666666; font-style: italic;]#13+E.message);

          [color= #990000;]exit[color= #339933;];

      [color= #990000;]END[color= #339933;];

      [color= #990000;]END[color= #339933;];

 

      s[color= #339933;].Seek[color= #009900;]([color= #cc66cc;]0[color= #339933;], soFromBeginning[color= #009900;])[color= #339933;];[color= #666666; font-style: italic;]//S.position:=0;

      Memo1[color= #339933;].Lines[color= #339933;].LoadFromStream[color= #009900;](s[color= #009900;])[color= #339933;];

      ClientDataSet1[color= #339933;].Close[color= #339933;];

      ClientDataSet1[color= #339933;].LoadFromStream[color= #009900;](s[color= #009900;])[color= #339933;];

      TRY

         ClientDataSet1[color= #339933;].Open[color= #339933;];

      EXCEPT ON E[color= #339933;]:Exception [color= #b1b100;]DO

        [color= #990000;]exit[color= #339933;];

      [color= #990000;]END[color= #339933;];

   FINALLY

      s[color= #339933;].Free[color= #339933;];

   [color= #990000;]end[color= #339933;];

[color= #990000;]end[color= #339933;];

هكذا انتهينا من webservice قراء ممتعة مع الموسوعة العربية للدلفي

#21

السلام عليكــم ورحمـة الله وبركاتــه ،،

اردت اكمال الموضوع قبل الغياب

http://en.wikipedia.org/wiki/Representational_State_Transfer

اريد معلومات عن REST مع الدلفي من ينفعنا لرابط امثلة لاني في الحقيقة لم اتعامل معها من قبل

شكرا

#22

السلام عليكــم ورحمـة الله وبركاتــه ،،

إن شاء الله سنكمل الدرس وذلك بمثال عن استخدام خدمت مايكروسوفتmappoint

معلومات مفيدة

http://www.mp2kmag.com/a65--delphi.example.mappoint.html

فيديوا مهم

http://video.codegear.com/CodeRage2007Arch...runeauBabet.zip

كود سورس جاهز

اذا كل الامكانيات لدينا لتجربة

ملاحطة

لم يسبق لى ان تعملت معه لذلك ارجوا المساعدة في انجاح المشروع

24534_bruneau_babet_s_web_services_demo_applications.ZIP

#23

/index.ph...20&start=20

شكرا لك أخي على هذا المجهود

الآن أنا صممت خدمة ويب بسيطة باستخدام C# وهي تعمل بشكل جيد. لكن عند تشغيلها يعطيني مسج مفادها التالي :

you should choose a new namespace

http://tempuri.org

هل هذا يعني ان علي استخدام سيرفر آخر أو ماذا؟

وبعد أن صممت تطبيق ويب وقمت باستخدام خدمة الويب التي قمت بتصميمها. الحمد لله اشتغل التطبيق.

هل يعني الآن أن اي شخص يستطيع ان يستخدم هذه الخدمةوهل تعتبر الآن متاحة على الانترنت.؟

مع الشكر الجزيل

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 15 نوفمبر 2009 في 22:17

#24

السلام عليكم

أخي عبد العالي هل ممكن إعادة رفع الصور الخاصة بانشاء المجلدات لأنني اريد انشاء خدمة على الويب، رجاء ان ترفعها في اسرع وقت لأنني محتاج لها ضروري (المؤسسة التي اعمل فيها طلبت مني انشاء هذا المشروع ) شكرا

تريد الفوز إضغط هنا

اشِهِدي يَا سَمَـا وَاكْتُبَنْ يا وُجـودْ

إنَّـنَـا للِحـمَـا سَنَكُونُ الجُـنُـودْ

فـنَـزيحْ البَـلاَ وَنَـفُـكُّ الْقُيُـودْ

ونَنيلُ الـرِّضـا مِنْ وَفَّى بِالعْهُـودِ

الشيخ عبد الحميد ابن باديس

#25

اهلا اخي مسعود من زمان يارجل لم تكتب في arabteam

لم افهم سؤلك كل الصور واضحة .

انا في skyp الليلة .ان شاء الله .

مواضيع مشابهة