استخدام curl في سطر أوامر windows دون الاستعانة بـ Cygwin

إذا كنت مهتما بتطوير الويب وكان نظام التشغيل الأساسي لديك هو windows فمن من المُحتمل جدا أنه قد صادفت حالات احتجت إلى استخدام curl فيها. الحل الذي يلجأ إليه الكثيرون هو تنصيب Cygwin وهو ما يحل المُشكل هنا، إلا أن cygwin وشاشته تعاني بعض النقائص، قد يكون أدناها هو الاضطرار إلى استخدام طرفتين مختلفتين على نفس النظام.

هناك حل آخر حيث أنه يكفي تحميل نسخة من curl متوافقة مع إصدار نظام windows الذي تستعمله من على هذه الصفحة:

http://curl.haxx.se/download.html

وبعد تحميل الملف وفك ضغطه قم بنقل الملف curl.exe إلى system32، وبعدها سيصبح بالإمكام استخدام curl مباشرة من سطر أوامر Windows.

حل لمشكل عدم تمرير سوى Parameter واحد لدى استخدام Curl في Drupal

لدى استخدام Curl لمناداة Web Service ما، تحميل صفحة معينة، أو لأي هدف آخر، فإننا عادة ما نستخدم شيفرة مماثلة للشيفرة التالية (لدى البرمجة باستخدام PHP):

$params = array(
‘param1’    => “some String”,
‘param1’      => “Another string”,
‘param3’      => 25
);

$cmd = curl_init();
$url=”SomeURL”.http_build_query($params)
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($cmd);

لكن لدى استخدام نفس الكود على Drupal فإن الوضع…سيدفعك إلى الجنون، لأنه مهما حاولت فإنه لم يتم تمرير سوى الـ Parameter الأول.

بعد بحث طويل، وبعد محاولة أكثر من طريقة، الحل يكمن في طريقة بناء الاستعلام، حيث بدل بنائه باستخدام

http_build_query($params)

يجب استخدام صيغة أخرى لنفس التابع والتي تكون على النحو التالي:

http_build_query($params), ”, ‘&’);

وسيتم بإذن الله حل المشكل

ملاحظة: قد لا تكون هذه الطريقة الأمثل لاستخدام Curl على Drupal، حيث يوفر النظام دوال خاصة به يمكن استخدامها مثل دالة drupal_http_request

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