• 0
alharethi

استدعاء و استخدام ASP.NET Web Services

سؤال

السلام عليكم ورحمة الله و بركاته جميعا.

لمن يمكن ان يحتاج مثل هذا الشيء و لكي تعم الفائدة...

كنت في الاونة الاخيرة عندي وظيفة استدعاء لـ ASP.NET Web Service من صفحة تقليدية بلغة ASP 3.0....

كل ما تحتاجه هو ان تعرف خدمة الويب بلغة ASP.NET و معرفة ما اذا كان لها عناصر ادخال ام لا --Input Paramters -- و ما نوع النتيجة التي تعود او ترجع لنا من هذه الخدمة

غالبا ما تكون النتائج من استخدام ASP.NET Web Services عبارة عن صفحة XML او DataSet و تكمن المشكلة فيما لو كان لهذه ASP.NET Web Services اكثر من عنصر ادخال و نتيجتها تكون DataSet و ليس String أو اي شيء آخر

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

على كل حال... كل ما تحتاجه هو معرفة قليلة باستخدام SOAP أو Simple Object Access Protocol بالاضافة الى معرفة ايضا بالـ XML و كذلك ايضا كائن XML DOM --Document Object Model -- ....

في حالتنا هذا سنحتاج الى الكائنين الاخيرين بالاضافة الى كائن ServerXMLHTTP ....

الكود هو كالتالي:

vURL = "http://www.yourserver.com/YourWebServicePage.asmx/YourWebServiceFunction?Parameter1=" & vParameter1 &"&Parameter2=" & vParameter1

 
Set oXMLHTTP = server.CreateObject("MSXML2.ServerXMLHTTP.4.0")

Set objXML  = Server.CreateObject("MSXML2.DOMDocument")
objXML.async = FALSE

oXMLHTTP.open "GET", vURL, FALSE
oXMLHTTP.send

--- لا بد من كتابة هذا السطر كي يعرف الكائن ان النتيجة هي XML
Response.ContentType = "text/xml"
myXML = oXMLHTTP.responseXML.xml

يمكنك استدعاء عنوان الـ ASP.NET Web Services بطريقتين.

الطريقة الاولى هي المذكورة في الكود السابق. فاذا تطلبت ASP.NET Web Services عناصر ادخال فانك يمكنك ادخالها ضمنا على العنوان....

بمعنى: العنوان الرئيسي للصفحة التي تحتوي على ASP.NET Web Services هو

 "http://www.yourserver.com/YourWebServicePage.asmx

و الدالة التي تريد طلبها اسمها: YourWebServiceFunction و لها عنصري ادخال 1 & 2

و يتم استدعائها بهذه الطريقة كما هو مذكور سابقا في اول كود

الطريقة الثانية هي ان تستدعيها باستخدام كائن SOAP كالتالي:

تصنع كائن جديد لـ SOAP و تفعل التالي:

Set ObjSoap= Server.CreateObject("MSSOAP.SoapClient30")
ObjSoap.ClientProperty("ServerHTTPRequest")=True
ObjSoap.MSSoapInit "http://www.yourserver.com/YourWebServicePage.asmx?wsdl"

--ساوي القيمة الناتجة لمتغير
myResult= objSoap.YourWebServiceFunction(Parameter1, Parameter2)

الان كل ما عليك هو معالجة المتغيرين الناتجين و استخراج القيم التي تريدها

للطريقة الاولى: المتغير الذي تحتاج الى استخراج القيم منه هو: myXML و للطريقة الثانية هو: myResult

ملاحظة: من اجل استخدام SOAP لا بد ان تكون محمل SOAP TOOL KIT 3.0 من هناSOAP Tool Kit 3.0

ملاحظة: عناصر الادخال لـ ASP.NET Web Service Function حساسة للغاية لنوع المتغير بمعنى اذا كان عنصر الادخال هو نص و ادخلته على انه رقم و لم تغيره او تحوله لنص فانك ستجد خطا ينتج عن هذا

مراجع استخدام و معالجة نصوص XML

http://www.stardeveloper.com/articles/disp...00072801&page=1

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

تم تعديل بواسطه alharethi
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

14 إجابة على هذا السؤال .

  • 0

اشكرك يا اخى العزيز معلومه جديده و مفيده إن شاء الله

فكما يعلم البعض انه بالامكان المزاوجه بين ASP.NET و ASP3

و استخدام خدمات الويب المصنوعه بالدوت نيت من داخل ASP 3 يحقق ال Application Scalabilty فيمكنك إبقاء مطورى ال asp3 من العمل لديك مع توظيف مطورين asp.net و الاستفاده من ناتج دمج الاثنين

تم تعديل بواسطه طارق إبراهيم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيمن ثبت هذا الموضوع .... و شكرا لك اخونا طارق على ردك. (كأني بك ثبته)

لعلي اكمل الدرس ان شاء الله في الايام القليلة المقبلة حيث و انا على وشك نهاية اشياء اخرى في العمل ... نراكم على خير ان شاء الله ....

الاخ طارق بارك الله فيك: عندي برامج ممكن يجتاج لها الاخوة و غالبا ما اجدهم يسألون عنها خصوصا لما يستخدموا ASP 3.0 ...

هذه البرامج هي:

ASP Email

ASP Upload

ASP Spell Checker

(English Spell Checker Only --- Works with database as well)

بالاضافة الى برنامج مهم قد يجتاجه بقية الاخوة و هو: SQL Navigator 4.0 Enterprise يستخدم مع ORACLE Database و هو قمة في الروعة و الاداء....

حاولت غالبا اضيف هذه البرامج كلمحقات فلم استطع...اذا كان هناك من طريق فأخبرني عنه بارك الله فيك يا اخ طارق

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم جميعا ...

تأخرت شويه نوعا ما ....

على كل حال، كأني اكملت شرح ما يتم عمله لو ان الـ Web Service ترجع لك نص او رقم فتحتاج الى ان تقوم باستخدام التالي:

Set ObjSoap= Server.CreateObject("MSSOAP.SoapClient30")
ObjSoap.ClientProperty("ServerHTTPRequest")=True
ObjSoap.MSSoapInit "http://www.yourserver.com/YourWebServicePage.asmx?wsdl"

--ساوي القيمة الناتجة لمتغير
myResult= objSoap.YourWebServiceFunction(Parameter1, Parameter2)

اذا كانت النتيجة التي تعود اليك من الـ Web Service عبارة عن DataSet فتحتاج الى استخدام ServerXMLHTTP بالاضافة الى XML DOM Object و ايضا XPath

تستخدم الـ XMLHTTPServer من اجل التوصيل الى الـ Web Service و ارسال المتغيرات اليها .... و من ثم تستخدم كائن XML DOM Object من اجل حفظ و قراءة كل النتيجة في ذاكرة الكمبيوتر مؤقتا ... ثم تقوم بمعالجة النصوص المحفوظة بـ XPath كالتالي:

اولا: ارسل المتغيرات

vURL = "http://www.yourserver.com/YourWebServicePage.asmx/YourWebServiceFunction?Parameter1=" & vParameter1 &"&Parameter2=" & vParameter1


Set oXMLHTTP = server.CreateObject("MSXML2.ServerXMLHTTP.4.0")

oXMLHTTP.open "GET", vURL, FALSE
oXMLHTTP.send

ثانيا: احتفظ بالنتيجة في كائن الـ XML DOM Object

Response.ContentType = "text/xml"
myXML = oXMLHTTP.responseXML.xml

هذه الشفرة:  oXMLHTTP.responseXML.xml تحتوي كل الصفحة العائدة من استدعاء هذه الـ Web Service و تنسيقها كما هي كشفرة XML

ثالثا تقوم باستخدام كائن XPath من اجل الوصول الى القيم المتغيرة التي تريدها و غالبا ما تحتاج الى معرفة النتيجة التي تعود من الـ DataSet فمثلا خذوا مثلا هذا الكود و هو عبارة عن DataSet كنيتجة لاستدعاء واحدة من الـ Web Services التي اشتغلت عليها ... الصورة ملحقة ...

من اجل الوصول الى متغير اسمه: Group Code فعلت التالي باستخدام الـ XPath و لمن اراد المعرفة عن XPath فعليه بالذهاب الى مكتبة ميكروسوفت

set GroupCode = objXML.selectSingleNode("//DataSet/diffgr:diffgram/NewDataSet/CustomerInfo/GroupCode")

set AnalystCode = objXML.selectSingleNode("//DataSet/diffgr:diffgram/NewDataSet/CustomerInfo/AnalystCode")

sNewGroupCod        = Cint(GroupCode.text)

sNewAnalystCode    = Cint(AnalystCode.text)

فتجد ان متغير GroupCode سيحصل على نتيجة وهي

<GroupCode>808</GroupCode>

باستخدام الدالة selectSingleNode و التي هي احد دوال كائن XML DOM Object او ما يسمى بـ XPath

و من اجل الحصول على القيمة العديدة المحصورة بداخل وسم XML... لابد من استخدام خاصية الـ text للمتغير GroupCode

الان حصلت على القيمة التي تريد ... عليك معالجتها بما تحب

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

المهم .... ان شاء الله تكونوا استفدم...

post-129-1097199854_thumb.jpg

تم تعديل بواسطه alharethi
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

موضوع جميل لكن هل ممكن شرحة باستخدام asp.net سي شارب

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور وماقصرت على المعلومه المفيده ....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

الاخ ahmead24 ... هذا المقال يناقش استدعاء ASP.NET Web Service من صفحة ASP 3.0 بالتقنية القديمة قبل الدوت نت.... و ليس استدعاء ASP.NET Web Service من صفحة اخرى بتقنية ASP.NET ....

الـ Web Service اللي اشتغلت عليها بالمثال هي بلغة الـ VB.NET و ليس السي شارب و ما اعتقد ان الفارق بينهما كبير و التحويل من لغة لاخرى سهل للغاية.

هذا رابط لكيفية صناعة و استدعاء ويب سيرفيس من صفحة اخرى بلغة الـ ASP.NET بالفيجوال بيسك دوت نت.

http://aspnet.4guysfromrolla.com/articles/062602-1.aspx

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

VB.NET and C# Comparison

http://www.harding.edu/USER/fmccown/WWW/vb...comparison.html

و السلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

تحية طيبه وبعد اخوتي :

بالبداية هاي اول مشاركة لي في المنتدي

موضوع خدمات الانترنت جديدة شوي علي ... و السؤال انا عامل تطبيق وندوز بيعرض صورة من كاميرا على فورم و ممكن التقاط صورة من هذه الكاميرا و تخزينها ... هل ممكن استدعي هذا التطبيق ليشتغل على صفحة ويب عن طريق الويب سيرفس ام لازم احول هذا التطبيق الي تطبيق انترنت بالكامل و هنا واجهت صعوبة و طرحت المشكلة و لحد هلا ما حد جاوب على سؤالي ؟

و المشكله كانت كمايلي :

الموضوع ببساطة كيفية عرض صورة من كاميرا على صفحة ويب

طبعا و زي ما بتعرفو لازم يكون في سيرفير يوخذ الصورة من الكاميرا و الكلاينت يقوم عن

طريق ActiveX يعني .DLL file بالوصول الى هذا السيرفر و اخذ الصورة

هذا هو السناريو

و لكن ... المشكله في التطبيق انا واجهت مشكله كبيرة في تطبيق هذا البرانامج

و الكود موجود و ما في اخطاء بس لمن يتنفذ بيعطي خطأ في

GrabFrame() و هو عبارة عن اجراء يقوم باخذ صورة من Video component

و هنا المشكله

فيا ريت اي واحد عندو اي فكرة جدية ... يطيفني عندو على الماسنجر ... او يبعث

على الايميل

[email protected]و شكرا

اخوكم عمر من قلسطين

Dream2be

تم تعديل بواسطه dream2be
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

شكرا لك على شرحك للويب سيرفس لكن كيف لي ان اعرف هل ترجع وتستخده parameter اديه من وين؟؟؟؟؟؟؟؟؟؟

انا بدي استخدم ويب سيرفس جاهزة من موقع www.webservicex.com

ياريت تساعدني لانو مش عارفه كيف اتعامل معها هيا عن الweather

شكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الأخ/ alharethi

ممكن تشرح لي ما هو ال web services وما هو عمله

وإذا كان عندي تطبيق عمل على صفحات .aspx وكيف يتم ربطه بالweb services.

لأنني غالباً ما أسمع عنه.

على فكرة أنا مبرمج مبتدئ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

المعذرة على عدم الرد حيث و أنا مشغول جدا هذه الأيام ... وفق الله الجميع لكل ما يحب و يرضى

الأخ dream2be - عمر - المعذرة أخي الكريم حيث لا استطيع افادتك على سؤالك

الاخ hkhk - اعتقد ان اخانا الفاضل عبد الله قد أفادك جزاه الله خيرا

white_rose - بالاضافة الى ما قاله الاخ عبد الله اقول:

المجاهيل التي تستطيعين ان تمرريها الى الدالة موجودة في وصف الدالة نفسها ...

فمثلا .. لو ذهبت الى هذه الصفحة http://www.webservicex.net/WeatherForecast...therByPlaceName

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

SOAP
The following is a sample SOAP request and response. The placeholders shown need to be replaced with actual values.

POST /WeatherForecast.asmx HTTP/1.1
Host: www.webservicex.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.webservicex.net/GetWeatherByPlaceName"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
   <GetWeatherByPlaceName xmlns="http://www.webservicex.net">
     <PlaceName>string</PlaceName>
   </GetWeatherByPlaceName>
 </soap:Body>
</soap:Envelope>

الكود المذكور أعلاه هو الـ SOAP Response لتلك الدالة و يمكنك ان تستدعيها من شفرتك - كما هو موجود في الموقع نفسه - كالتالي:

HTTP GET
The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /[COLOR=red]WeatherForecast.asmx/GetWeatherByZipCode?ZipCode=string [/COLOR]HTTP/1.1
Host: www.webservicex.net

الخط الملون بالاحمر هو يحتوي على التالي:

WeatherForecast.asmx : الصفحة الرئيسية لكل الدوال في هذا الكلاس

GetWeatherByZipCode: الدالة المراد استخدامها

ZipCode: هذا هو الـ Parameter الذي نريد ان نمرره الى هذه الدالة.... وبناءا على المقال الأول لهذا الموضوع فيمكنك فعل التالي:

vURL = "http://www.webservicex.net/WeatherForecast.asmx/GetWeatherByZipCode?ZipCode=" & vParameter1


Set oXMLHTTP = server.CreateObject("MSXML2.ServerXMLHTTP.4.0")

Set objXML  = Server.CreateObject("MSXML2.DOMDocument")
objXML.async = FALSE

oXMLHTTP.open "GET", vURL, FALSE
oXMLHTTP.send

هذه الطريقة هي طريقة استخدام كائنات الـ ServerXMLHTTP و ايضا XML DOM --Document Object Model

أنا افضل استخدام هذه الطريقة ... اذا احببت استخدام طريقة الـ SOAP فيمكنك فعل التالي:

Set ObjSoap= Server.CreateObject("MSSOAP.SoapClient30")
ObjSoap.ClientProperty("ServerHTTPRequest")=True
ObjSoap.MSSoapInit "http://www.webservicex.net/WeatherForecast.asmx?wsdl"

--ساوي القيمة الناتجة لمتغير
myResult= objSoap.GetWeatherByZipCode(11111)

و الله يوفق الجميع ...

انا حاولت اجرب بعض هذه الـ Web Services, و الظاهر انهم مو شغالين ... - يمكن على الموقع المذكور أعلاه ...لكن المفورض ان تقومي باستخدام هذه الدوال على كمبيوترك

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله خير ولكن لماذ دائما الشروحات العربية ناقصة مثلا قلت تصنع كائن جديد لـ SOAP و تفعل التالي: المفترض ان تضع كيفية الصناع حتى وان كانت سهلة حتى يكتمل الشرح من جميع جوانبة وشكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
بارك الله فيمن ثبت هذا الموضوع .... و شكرا لك اخونا طارق على ردك. (كأني بك ثبته)

لعلي اكمل الدرس ان شاء الله في الايام القليلة المقبلة حيث و انا على وشك نهاية اشياء اخرى في العمل ... نراكم على خير ان شاء الله ....

الاخ طارق بارك الله فيك: عندي برامج ممكن يجتاج لها الاخوة و غالبا ما اجدهم يسألون عنها خصوصا لما يستخدموا ASP 3.0 ...

هذه البرامج هي:

ASP Email

ASP Upload

ASP Spell Checker

(English Spell Checker Only --- Works with database as well)

بالاضافة الى برنامج مهم قد يجتاجه بقية الاخوة و هو: SQL Navigator 4.0 Enterprise يستخدم مع ORACLE Database و هو قمة في الروعة و الاداء....

حاولت غالبا اضيف هذه البرامج كلمحقات فلم استطع...اذا كان هناك من طريق فأخبرني عنه بارك الله فيك يا اخ طارق

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

أخي مشكور جدا على الدرس، ويا ريت لو تضعلنا هذي البرامج

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .