عميل HTTP بلغة PHP: إجراء الطلبات بشكل صحيح من الألف إلى الياء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا نحتاج إلى عميل HTTP بلغة PHP؟

في تطوير الويب الحديث، نادرًا ما توجد تطبيقات PHP بشكل منعزل. تقريبًا كل مشروع يتفاعل مع خدمات خارجية: أنظمة الدفع، واجهات برمجة تطبيقات الشبكات الاجتماعية، التخزين السحابي، أو الخدمات المصغرة الخاصة. لهذا، نحتاج إلى عميل HTTP موثوق بلغة PHP يسمح بإرسال الطلبات، ومعالجة الردود، وإدارة الاتصالات.

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

ستكون المادة مفيدة لكل من المبتدئين الذين بدأوا للتو في تعلم PHP، والمطورين ذوي الخبرة الذين يرغبون في تنظيم معرفتهم.



1. الأدوات المدمجة في PHP لطلبات HTTP

توفر PHP عدة أدوات مدمجة للعمل مع HTTP. دعنا نستعرض الأكثر شيوعًا.



1.1. file_get_contents() — طريقة بسيطة

أبسط طريقة لإرسال طلب GET هي استخدام الدالة file_get_contents(). تقوم بقراءة محتوى ملف أو URL إلى سلسلة نصية.

<?php$url = 'https://api.example.com/data';$response = file_get_contents($url);

if ($response === false) { echo 'خطأ أثناء تنفيذ الطلب';} else { echo $response;}?>

المزايا: كود بسيط، لا يتطلب إضافات إضافية.

العيوب: لا يدعم طلبات POST، صعوبة التحكم في الرؤوس، لا معالجة للمهلات الزمنية، غير مناسب للإنتاج.



1.2. stream_context_create() — إعداد السياق

للحصول على مرونة أكبر، استخدم stream_context_create(). تتيح هذه الطريقة تحديد طريقة الطلب، الرؤوس، ونص الطلب.

<?php$data = json_encode(['name' => 'John', 'age' => 30]);

$options = [ 'http' => [ 'method' => 'POST', 'header' => "Content-Type: application/json\\r" . "Content-Length: " . strlen($data) . "\\r", 'content' => $data, 'timeout' => 10 ]];

$context = stream_context_create($options);$response = file_get_contents('https://api.example.com/users', false, $context);

if ($response === false) { echo 'خطأ في الطلب';} else { $result = json_decode($response, true); print_r($result);}?>

هذا الأسلوب أفضل، لكنه لا يزال يعاني من قيود في الوظائف والأداء.



2. cURL — عميل HTTP قوي بلغة PHP

cURL (Client URL Library) هي أداة قياسية للعمل مع HTTP في PHP. توفر أقصى تحكم في الطلبات وهي مدعومة تقريبًا على جميع خدمات الاستضافة.



2.1. إرسال طلب GET أساسي

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/users');curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 30);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_error($ch)) { echo 'خطأ cURL: ' . curl_error($ch);} else { echo "كود HTTP: $httpCode"; echo $response;}

curl_close($ch);?>


2.2. طلب POST مع بيانات

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/users');curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['name' => 'Alice', 'email' => 'alice@example.com']));curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, [    'Content-Type: application/x-www-form-urlencoded',    'Authorization: Bearer your_token_here']);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($c

المدونات

توصيات الكتب