Heim > Backend-Entwicklung > PHP-Tutorial > Wie gehe ich mit HTTP-Fehlern um und rufe Antwortcodes mit „file_get_contents' und „stream_context_create' ab?

Wie gehe ich mit HTTP-Fehlern um und rufe Antwortcodes mit „file_get_contents' und „stream_context_create' ab?

Linda Hamilton
Freigeben: 2024-12-02 08:17:10
Original
678 Leute haben es durchsucht

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

HTTP-Antwortcode mit file_get_contents und stream_context_create

Um POST-Anfragen zu stellen, können Sie file_get_contents in Verbindung mit stream_context_create verwenden. Bei HTTP-Fehlern können jedoch Warnungen angezeigt werden. Dieser Artikel befasst sich mit diesem Problem und bietet Lösungen sowohl zum Unterdrücken der Warnungen als auch zum Erhalten von Antwortcodes aus dem Stream.

Betrachten Sie zunächst das folgende Szenario:

$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);
Nach dem Login kopieren

Dieser Code verarbeitet POST-Anfragen. aber im Falle eines HTTP-Fehlers wird eine Warnung angezeigt:

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

Zusätzlich wird false zurückgegeben. Aus diesem Problem ergeben sich zwei Bedenken:

  1. Kann ich verhindern, dass die Warnung angezeigt wird?
  2. Ist es möglich, Fehlerdetails, insbesondere Antwortcodes, aus dem Stream abzurufen?

Warnung unterdrücken

Um die Warnung zu unterdrücken, können wir „ignore_errors“ verwenden Option in stream_context_create():

$context = stream_context_create(['http' => ['ignore_errors' => true]]);
Nach dem Login kopieren

Mit dieser Änderung wird die Warnung nicht mehr angezeigt.

Antwortcodes erhalten

Zu erhalten Um den Antwortcode aus dem Stream zu erhalten, können Sie den http_response_header überprüfen Variable:

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

Dieser Code zeigt ein Array mit Antwortheadern an, einschließlich des Antwortcodes.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit HTTP-Fehlern um und rufe Antwortcodes mit „file_get_contents' und „stream_context_create' ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage