Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengendalikan Ralat HTTP dan Dapatkan Kod Respons dengan `file_get_contents` dan `stream_context_create`?

Bagaimana untuk Mengendalikan Ralat HTTP dan Dapatkan Kod Respons dengan `file_get_contents` dan `stream_context_create`?

Linda Hamilton
Linda Hamiltonasal
2024-12-02 08:17:10681semak imbas

How to Handle HTTP Errors and Retrieve Response Codes with `file_get_contents` and `stream_context_create`?

Kod Respons HTTP dengan file_get_contents dan stream_context_create

Untuk membuat permintaan POST, anda boleh menggunakan file_get_contents bersama-sama dengan stream_context_create. Walau bagaimanapun, anda mungkin menghadapi amaran apabila anda menghadapi ralat HTTP. Artikel ini menangani isu ini dan menyediakan penyelesaian untuk kedua-dua menyekat amaran dan mendapatkan kod respons daripada strim.

Untuk bermula, pertimbangkan senario berikut:

$options = ['http' => [
    'method' => 'POST',
    'content' => $data,
    'header' => 
        "Content-Type: text/plain\r\n" .
        "Content-Length: " . strlen($data) . "\r\n",
]];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

Kod ini mengendalikan permintaan POST, tetapi sekiranya berlaku ralat HTTP, amaran dipaparkan:

file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

Selain itu, ia mengembalikan palsu. Dua kebimbangan timbul daripada isu ini:

  1. Bolehkah saya menghalang amaran daripada muncul?
  2. Adakah mungkin untuk mendapatkan butiran ralat, terutamanya kod respons, daripada strim?

Mencegah Amaran

Untuk menyekat amaran, kami boleh menggunakan pilihan ignore_errors dalam stream_context_create():

$context = stream_context_create(['http' => ['ignore_errors' => true]]);

Dengan pengubahsuaian ini, amaran tidak akan dipaparkan lagi.

Mendapatkan Kod Respons

Untuk mendapatkan kod respons daripada strim, anda boleh memeriksa http_response_header pembolehubah:

$context = stream_context_create(['http' => ['ignore_errors' => true]]);
$result = file_get_contents("http://example.com", false, $context);
var_dump($http_response_header);

Kod ini akan memaparkan tatasusunan yang mengandungi pengepala respons, termasuk kod respons.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat HTTP dan Dapatkan Kod Respons dengan `file_get_contents` dan `stream_context_create`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn