السبت , ديسمبر 7 2019
الرئيسية / تدوينات برمجية / شرح Curl للتفاعل مع Web service

شرح Curl للتفاعل مع Web service

الانترنت يحتوي على الكثير من الخدمات التي نراها في مواقع عالمية كثيرة على سبيل المثال اذا كنت تمتلك موقع تسوق وتريد حساب تكلفة الشحن من سلطنة عمان الى باليورو , هنا تحتاج ان تتخاطب مع شركات الشحن وتسألهم وتجري العديد من الحسابات و ايضاً اذا قامت الشركة بتغيير سياستها في الاسعار تضطر الى تغيير انت ايضاً بعض صفحات الموقع , وايضاً مثال اخر ماذا اذا كنت تريد ان تتأكد ان الزائر لديه رصيد في بطاقته الإئتمانية بما يكفي للتسوق في موقعك وذلك من خلال البنك الصادره منهُ بطاقته ؟ هنا تضطر ايضاً ان تقوم بفتح خدمة مع احد البنوك العالمية وهذا مكلف نوعاً ما . لذلك يجب يكون هناك حلاً يحل هذه المشاكل و يسهل هذه الامور بطريقة مجانية و بسيطة .

في هذا الدرس سوف اتحدث عن طريقة طلب خدمة من مواقع عالمية لتدخلها في موقعك مثل حساب تكلفة الشحن او التأكد ان البطاقة الإئتمانية تحتوي على رصيد او معرفة خدمات الطقس وغيرها باستخدام لغة PHP وباستخدام مكتبة Curl .

 

مستوى الدرس :

هذا الدرس للمتوسط و للمحترف .

 

من أجل الحصول على معلومات متوفرة في موقع آخر أول شيء يجب ان تعرفه هو Curl وهي مكتبة في لغة PHP وايضاً متوفرة على حد علمي للغات الأخرى , هذه المكتبة تقوم بالتخاطب مع اي موقع اخر وتجلب المعلومات المطلوبة بالطريقة التي يحددها المبرمج والفكرة هنا انك تقوم ببرمجة بعض الاسطر تحاكي المتصفح بحيث باستخدام هذه المكتبة تستطيع طلب معلومات الطقس من موقع ياهو و موقع ياهو يستلم طلبك كأنهُ من زائر على موقعه وليس كأنك اوتوماتيكياً طلبت المعلومات وهكذا تستطيع باستخدام Curl ان تطلب اي شيء تريده من اي موقع متوفر على الانترنت سواءا كان صفحة HTML او حتى XML Web service .

 

حسناً  :mrgreen:  الان ندخل الى صلب الموضوع كيف لنا ان نطلب خدمة متوفرة في موقع اخر من موقعنا ؟ للاجابة على هذا السؤال يجب ان نفهم ان طلب خدمة من موقع اخر يعني الاتصال بذلك الموقع و الاتصال بالموقع يمكن ان يكون باحدى هذه الطرق

  1. استخدام Curl مكتبة توجد في لغة PHP
  2. استخدام مكتبة OpenSSL للوصول الى مواقع محمية بـ HTTPS
  3. استخدام احد البرامج لقراءة ملفات XML بحيث الموقع المطلوب منه المعلومات سوف يوفر لك المعلومات بتنسيق XML وتقوم بقراءتها باستخدام هذا البرنامج وهذا ليس موضوعنا .

 

الاتصال بسيرفر آخر

لتوضيح كيف تقوم  دوال  PHP cURL  بالعمل يجب ان نقوم بعمل بالاتصال بـ أي صفحة ويب موجودة في الانترنت و قراءة المعلومات التي توجد بها برمجياً ولذلك اول خطوة للتعامل مع cURL هو انشاء الاتصال باستخدام الدالة

هذه الدالة تقوم بانشاء الاتصال او بفتح الاتصال , وهنا نقصد انها تقوم بتجهيز صفحتك للاتصال بالسيرفر الاخر ويجب ان تسند الدالة الى متغير كالتالي

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

هذه الدالة تحمل الكثير من المعطيات من ضمنها الموقع المراد الاتصال به و ايضاً متغير الاتصال وما اذا كنت تريد ارسال الطلب مع ارجاع نتيجة الطلب (http header output) وهذا مثال على استخدامها

كما نرى في هذا المثال ان الدالة curl_setopt تحتوي على مقبض الاتصال و ايضا على CURLOPT_HEADER وهي المعنية عن طريقة ارسال و استقبال البيانات فهنا نرى اننا نقوم بارسال Header مع الطلب و بعدها لدينا رابط الموقع المراد الاتصال به .

افتراضياً  مكتبة  curl تقوم بتفعيل العديد من الخيارات التي بعضها ليس مفيداً او تقوم بطلب المعلومات بالطريقة الاعتيادية كمثل زائر يقوم بفتح المتصفح و الدخول الى الموقع المطلوب والحصول على كامل الصفحة وهذا ليس ما نريده , نحن نريد فقط معلومات او اجزاء محددة من الصفحة عوضاً عن تحميل كامل الصفحة كنص HTML  وتستطيع تعطيل هذه الميزة بالطريقة التالية

الآن انت جاهز لطلب اي صفحة ويب موجودة على موقع اخر باستخدام الدالة curl_exec وذلك كالمثال التالي :

هكذا قمنا بضبط الاتصال و الاعدادات الخاصة بـ cURL وبطريقة بسيطة للغاية , الذي يجب ان نفهمه في الكود السابق هو الدالة curl_exec وهي التي تقوم بتنفيذ طلب الاتصال و تجلب النتائج بناءا على الاعدادات السابقة التي توجد في الاسطر التي قبلها , اذا لم تقم بتحديد الاعدادات سوف يتم استخدام الاعدادات الافراضية و هي جلب كامل الصفحة كصفحة HTML كاملة .

 

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

هذا مثال جيد لكي تفهم طريقة عمل curl ولكن ماذا اذا كنت تريد ارسال HTTP POST Request من اجل الحصول على المعلومات ؟

 

في بعض الاحيان الموقع الذي يوفر المعلومة يطلب منك تعبئة Form والضغط على زر معين وبعدها يقوم بعرض المعلومة لذلك يجب ان نعرف كيف نستخدم GET and POST باستخدام cURL وفي الحقيقة الامر بسيط للغاية كل ماعليك القيام به هو اضافة اعدادات اضافية باستخدام الدالة curl_setopt() والتي بدورها تخبر السيرفر انك تريد ارسال POST او GET . سوف اقوم بكتابة دالة كاملة تقوم بعمل الاتصال باستخدام POST ولك الحرية في استخدامها طبعاً

 

بهذه الدالة تستطيع الاتصال بـ اي موقع باستخدام مكتبة cURL وهنا مثال على استخدام الدالة

 

الخلاصة

استخدام مكتبة cURL يسمح لنا بالاتصال بسيرفر اخر على الانترنت وجلب المعلومات منه تستطيع استخدام الطريقة في التأكد من صلاحية بطاقة دفع او حتى جلب معلومات الطقس او طلب اي شيء اخر .

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

 

 

image sources

  • curl: كودر

عن كودر

[ كـودر ] مهندس برمجة , أحب التقنية , مُطوّر انظمة و تطبيقات , مهووس بالتقنية وكل جديد في عالم الإنترنت , أحب الكتابة عن التقنية عندما تسمح لي الفرصة .

شاهد أيضاً

استخراج النصوص من ملفات PDF باستخدام Python

هذه التدوينة واشرح فيها كيف نستطيع قراءة النص الموجود داخل ملف PDF باستخدام لغة Python وبشكل بسيط .إن مكتبة PyPDF2 لا تستطيع استخراج الصور او الوسائط في ملفات PDF بل انها تستطيع فقط استخراج النصوص وتعود الينا بنص ومن اجل فهم كيف تعمل هذه المكتبة سوف نقوم باستخراج نص من المثال التالي

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

*