>백엔드 개발 >PHP 튜토리얼 >`file_get_contents` 및 `stream_context_create`를 사용하여 HTTP 오류를 처리하고 응답 코드를 검색하는 방법은 무엇입니까?

`file_get_contents` 및 `stream_context_create`를 사용하여 HTTP 오류를 처리하고 응답 코드를 검색하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-02 08:17:10680검색

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

file_get_contents 및 stream_context_create를 사용한 HTTP 응답 코드

POST 요청을 수행하려면 stream_context_create와 함께 file_get_contents를 활용할 수 있습니다. 그러나 HTTP 오류가 발생하면 경고가 나타날 수 있습니다. 이 문서에서는 이 문제를 다루고 경고를 억제하고 스트림에서 응답 코드를 얻기 위한 솔루션을 제공합니다.

시작하려면 다음 시나리오를 고려하세요.

$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);

이 코드는 POST 요청을 처리합니다. 그러나 HTTP 오류가 발생하면 경고가 표시됩니다.

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

또한 false를 반환합니다. 이 문제로 인해 두 가지 우려 사항이 발생합니다.

  1. 경고가 표시되지 않도록 할 수 있나요?
  2. 스트림에서 오류 세부 정보, 특히 응답 코드를 검색할 수 있습니까?

경고 억제

경고를 억제하려면 다음을 수행하세요. stream_context_create() 내에서ignore_errors 옵션을 활용하십시오:

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

이 수정을 사용하면 경고가 더 이상 표시되지 않습니다.

응답 코드 얻기

스트림에서 응답 코드를 얻으려면 http_response_header를 검사하면 됩니다. 변수:

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

이 코드는 응답 코드를 포함하여 응답 헤더가 포함된 배열을 표시합니다.

위 내용은 `file_get_contents` 및 `stream_context_create`를 사용하여 HTTP 오류를 처리하고 응답 코드를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.