PHP:
ส่งคำขอ HTTP

วิธีการ:

PHP มีวิธีการที่ดีในการจัดการคำขอ HTTP ด้วยไลบรารี cURL แต่ตัวเลือกใหม่คือการใช้ file_get_contents สำหรับคำขอ GET ที่ง่ายกว่า หรือ stream_context_create สำหรับคำขอ POST นี่คือการดูอย่างรวดเร็วทั้งสองวิธี

คำขอ GET ด้วย file_get_contents():

// ลิงก์ URL ที่คุณต้องการ
$url = "http://example.com/api";

// ใช้ file_get_contents เพื่อทำคำขอ GET
$response = file_get_contents($url);

// ดัมพ์ข้อมูลสำหรับดูว่าคุณได้รับอะไร
var_dump($response);

คำขอ POST ด้วย stream_context_create():

// ลิงก์ URL ที่คุณกำลังโพสต์ไป
$url = "http://example.com/api";

// ข้อมูลที่คุณกำลังส่ง
$data = http_build_query([
    'foo' => 'bar',
    'baz' => 'qux',
]);

// ตัวเลือกของ stream context
$options = [
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => $data,
    ],
];

// สร้าง context ของ stream
$context  = stream_context_create($options);

// ทำการคำขอ POST และเก็บค่าตอบกลับใส่ในตัวแปร
$result = file_get_contents($url, false, $context);

// ดูว่าคุณได้รับอะไร
var_dump($result);

การศึกษาลึก

ในอดีต, fsockopen() เป็นตัวเลือกหลักสำหรับคำขอ HTTP ด้วย PHP มันอาจจะไม่คล่องตัว แต่ก็ทำงานได้ดี ต่อมามี cURL, ยังคงทรงพลังและได้รับการใช้งานอย่างแพร่หลาย โดยเฉพาะสำหรับการทำงานที่ซับซ้อน แต่บางครั้งคุณไม่จำเป็นต้องใช้เลื่อยเพื่อตัดเส้นด้าย file_get_contents() และ stream_context_create() จึงเข้ามามีบทบาท

สิ่งที่สำคัญเกี่ยวกับ file_get_contents() คือความเรียบง่ายของมัน เหมาะสำหรับคำขอ GET ที่ง่าย แต่ถ้าคุณต้องการ POST ข้อมูลล่ะ? stream_context_create() เข้ามามีบทบาท ตัวนี้ช่วยให้คุณปรับแต่งคำขอ HTTP ของคุณด้วยส่วนหัว, วิธีการ และอื่นๆ

ในหลังฉาก, file_get_contents() และ stream_context_create() ใช้ stream wrappers ของ PHP ซึ่งแทนที่การทำงานของ socket ระดับต่ำที่จัดการโดย fsockopen()

ข้อเสียหนึ่ง? การจัดการข้อผิดพลาดอาจซับซ้อนกว่า หากมีการผิดพลาด, ฟังก์ชันเหล่านี้ไม่ค่อยมีความให้อภัยเหมือนกับ cURL หากคุณต้องการข้อมูลตอบกลับอย่างละเอียดหรือมีงาน HTTP ที่ซับซ้อน พิจารณาใช้ cURL

ดูเพิ่มเติม