Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pustaka klien HTTP dalam PHP8.0

Pustaka klien HTTP dalam PHP8.0

WBOY
WBOYasal
2023-05-14 08:51:401660semak imbas

Pustaka klien HTTP dalam PHP8.0

Pengeluaran PHP8.0 membawa banyak ciri dan penambahbaikan baharu, salah satu yang paling menarik perhatian ialah penambahan perpustakaan klien HTTP terbina dalam. Pustaka ini menyediakan cara mudah untuk menghantar permintaan HTTP dan mengendalikan respons yang dikembalikan. Dalam artikel ini, kami akan meneroka ciri utama dan penggunaan perpustakaan ini.

Hantar permintaan HTTP

Menghantar permintaan HTTP adalah sangat mudah menggunakan perpustakaan klien HTTP terbina dalam PHP8.0. Dalam contoh ini, kami akan menggunakan kaedah GET untuk mendapatkan halaman utama tapak web ini:

use HttpClientExceptionHttpException;
use HttpClientHttpClient;
use HttpMessageRequestFactory;
use HttpMessageStreamFactory;

require_once "vendor/autoload.php";

// Create the client
$httpClient = HttpClientDiscovery::find();

// Create the request
$requestFactory = new RequestFactory();
$request = $requestFactory->createRequest(
    'GET',
    'http://example.com'
);

// Send the request and wait for the response
try {
    $response = $httpClient->sendRequest($request);
} catch (HttpException $e) {
    echo 'Error: ' . $e->getMessage();
    exit;
}

// Print the response body
$body = (string) $response->getBody();
echo $body;

Dalam contoh ini, kami mula-mula mencipta klien HTTP menggunakan kaedah kelas kilang HttpClientDiscovery::find(). Kemudian, gunakan kaedah RequestFactory::createRequest() untuk membuat permintaan HTTP, menyatakan kaedah permintaan dan URL permintaan. Akhir sekali, gunakan kaedah HttpClient::sendRequest() untuk menghantar permintaan dan tunggu respons. Jika permintaan gagal dihantar, pengecualian HttpException dinaikkan.

Memproses respons

Selepas menerima respons, kita boleh menggunakan objek respons HTTP untuk mengakses status respons, pengepala respons dan badan respons. Dalam kod di bawah, kami akan mencetak rentetan yang mewakili status respons, pengepala respons dan badan respons.

use HttpMessageResponseFactory;

$responseFactory = new ResponseFactory();
$status = $response->getStatusCode();
$headers = $response->getHeaders();
$body = (string) $response->getBody();

$responseString = sprintf(
    "HTTP/%s %s
%s

%s",
    $response->getProtocolVersion(),
    $status,
    implode("
", $headers),
    $body
);

echo $responseString;

Di sini, kami menggunakan kaedah ResponseFactory::createResponse() untuk mencipta objek tindak balas HTTP. Kemudian, gunakan kaedah yang disediakan oleh antara muka ResponseInterface untuk mengakses status respons, pengepala respons dan badan respons. Akhir sekali, kami menggabungkan respons ke dalam rentetan dan mencetaknya pada skrin.

Mengendalikan badan respons

Apabila kami menghantar permintaan HTTP dan menerima respons daripada pelayan, kami juga boleh memproses badan respons. Mari kita lihat cara mengendalikan badan tindak balas JSON:

use HttpMessageJsonResponseFactory;

$responseFactory = new JsonResponseFactory();
$decoded = $responseFactory->createResponse($response)->getPayload();

echo 'The decoded response is:' . PHP_EOL;
print_r($decoded);

Dalam contoh ini, kami menggunakan kaedah JsonResponseFactory::createResponse() untuk mencipta objek respons HTTP berformat JSON. Kemudian, gunakan kaedah JsonResponseInterface yang disediakan oleh antara muka getPayload() untuk menyahkod badan tindak balas JSON. Akhir sekali, kami mencetak badan tindak balas yang dinyahkod pada konsol.

Mengendalikan pengecualian

Apabila menggunakan perpustakaan klien HTTP, kadangkala permintaan mungkin gagal, mungkin disebabkan oleh ralat sambungan rangkaian atau kegagalan pelayan. Apabila ini berlaku, pustaka klien HTTP akan menimbulkan pengecualian HttpException. Dalam coretan kod berikut, kami akan menangkap pengecualian ini dan mencetak mesej ralat.

use HttpClientExceptionHttpException;

// ...

try {
    $response = $httpClient->sendRequest($request);
} catch (HttpException $e) {
    echo 'Error: ' . $e->getMessage();
    exit;
}

Jika pengecualian berlaku, mesej ralat akan dipaparkan dan atur cara akan keluar. Ini membolehkan kami mengambil tindakan yang sewajarnya jika permintaan gagal, seperti mencetak mesej ralat atau mencuba semula permintaan itu.

Kesimpulan

Pustaka klien HTTP ialah ciri baharu yang penting dalam PHP8.0. Ia menyediakan cara yang berkuasa untuk menghantar permintaan HTTP dan mengendalikan respons. Dalam artikel ini, kami telah memperkenalkan fungsi utama dan penggunaan perpustakaan klien HTTP, termasuk menghantar permintaan HTTP, memproses respons, memproses badan tindak balas dan mengendalikan pengecualian. Kini, kami boleh menggunakan perpustakaan klien HTTP dalam aplikasi PHP kami.

Atas ialah kandungan terperinci Pustaka klien HTTP dalam PHP8.0. 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