Rumah > pembangunan bahagian belakang > tutorial php > Petua menggunakan fungsi permintaan HTTP PHP

Petua menggunakan fungsi permintaan HTTP PHP

PHPz
Lepaskan: 2023-06-17 11:06:01
asal
1902 orang telah melayarinya

PHP, sebagai bahasa peringkat rendah, digunakan secara meluas dalam pembangunan rangkaian. Dalam pembangunan web, permintaan http adalah bahagian penting. Artikel ini akan memperkenalkan fungsi permintaan http yang biasa digunakan dalam PHP, cara menggunakannya dan teknik yang sepadan.

1. curl

curl ialah fungsi permintaan http yang sangat popular, yang menyokong pelbagai protokol, kaedah pengesahan, proksi dan fungsi lain. Ia adalah sebahagian daripada pakej pemasangan asas PHP, jadi tiada pemasangan diperlukan untuk menggunakannya.

(1) Penggunaan asas

Kod sampel:

$url = 'http://www.example.com';
$ch = curl_init(); // 初始化curl
curl_setopt($ch, CURLOPT_URL, $url); // 设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl请求的结果保存到变量中,而不直接输出到屏幕
$res = curl_exec($ch); // 执行请求
curl_close($ch); // 关闭curl
echo $res;
Salin selepas log masuk

Dalam contoh di atas, kita mula-mula memulakan pemegang keriting menggunakan fungsi curl_init(), dan kemudian memanggil curl_setopt() Fungsi menetapkan dua pilihan:

  • CURLOPT_URL: Tetapkan URL yang diminta.
  • CURLOPT_RETURNTRANSFER: Tetapkan curl untuk menyimpan hasil terus ke dalam pembolehubah tanpa mencetaknya.

Akhir sekali, kami memanggil curl_exec() untuk melaksanakan permintaan dan menggunakan curl_close() untuk menutup pemegang keriting. Hasil yang dikembalikan oleh permintaan akan disimpan dalam pembolehubah $res, dan kami boleh mengeluarkannya secara langsung.

(2) permintaan POST

Kadangkala, kita perlu menghantar permintaan HTTP POST. Dalam curl, kita boleh menggunakan pilihan CURLOPT_POST dan CURLOPT_POSTFIELDS untuk menghantar permintaan POST.

Kod sampel:

$url = 'http://www.example.com';
$post_data = array('key1' => 'value1', 'key2' => 'value2');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true); //设置为POST请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //设置POST参数
$res = curl_exec($ch);
curl_close($ch);
echo $res;
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menetapkan URL dan parameter POST permintaan, dan kemudian menetapkan pengecam CURLOPT_POST dalam pilihan curl untuk permintaan POST, dan digunakan CURLOPT_POSTFIELDSTetapkan parameter POST. Akhir sekali, kami menggunakan curl untuk melaksanakan permintaan dan mengeluarkan hasilnya.

(3) Tetapan tamat masa

Apabila menggunakan curl, kita mungkin menghadapi masalah tamat masa. Untuk menyelesaikan masalah ini, curl menyediakan pilihan CURLOPT_TIMEOUT dan CURLOPT_CONNECTTIMEOUT.

  • CURLOPT_TIMEOUT: Jika permintaan tamat tempoh, curl akan berhenti menunggu dan keluar serta-merta.
  • CURLOPT_CONNECTTIMEOUT: Jika curl mengambil masa lebih lama daripada bilangan saat yang ditetapkan oleh pilihan ini untuk mewujudkan sambungan dengan hos jauh, sambungan itu dianggap gagal dan curl akan berhenti menunggu dan keluar.

Kod contoh:

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 超时时间设置为10秒
$res = curl_exec($ch);
curl_close($ch);
echo $res;
Salin selepas log masuk

Dalam kod di atas, kami menetapkan pilihan CURLOPT_TIMEOUT dalam pilihan curl kepada 10 saat, yang bermaksud jika tamat masa permintaan melebihi 10 saat, curl Akan berhenti menunggu dan keluar.

2. file_get_contents

Selain curl, PHP juga menyediakan beberapa fungsi permintaan http yang lain. Perkara yang paling asas ialah file_get_contents.

(1) PERMINTAAN GET

Kod contoh:

$url = 'http://www.example.com';
$res = file_get_contents($url); // 直接获取URL的内容
echo $res;
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi file_get_contents() terbina dalam PHP untuk mendapatkan terus kandungan URL dan menukarnya output.

(2) Tetapan tamat masa

Apabila menggunakan fungsi file_get_contents, kita mungkin perlu menetapkan tamat masa. Kita boleh mencipta aliran konteks melalui fungsi stream_context_create() dan kemudian menghantarnya sebagai parameter ketiga kepada fungsi file_get_contents().

Kod sampel:

$url = 'http://www.example.com';
$context = stream_context_create(array('http' => array('timeout' => 10))); // 超时时间设置为10秒
$res = file_get_contents($url, false, $context);
echo $res;
Salin selepas log masuk

Dalam kod di atas, kami mencipta strim konteks dan menetapkan tamat masanya kepada 10 saat. Kami kemudian menggunakan fungsi file_get_contents() dan lulus aliran konteks ke fungsi sebagai parameter ketiga.

3. fsockopen

fsockopen ialah fungsi dalam PHP yang digunakan untuk membuka soket. Kita boleh menggunakan ini untuk berkomunikasi secara langsung dengan pelayan.

Kod contoh:

$host = 'www.example.com';
$port = 80;
$timeout = 10;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout); // 和服务器建立连接

$request = "GET / HTTP/1.1
";
$request .= "Host: $host
";
$request .= "Connection: close

"; // 请求头
fwrite($fp, $request); // 发送请求
while (!feof($fp)) {
    echo fgets($fp, 1024); // 输出结果
}
fclose($fp); // 关闭连接
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi fsockopen() untuk membuka sambungan soket dan mewujudkan sambungan ke port 80 hos www.example.com. Kami kemudian menetapkan pengepala permintaan GET dan menulisnya ke pelayan melalui soket. Akhir sekali, kami menggunakan gelung sementara untuk mengeluarkan keputusan dan fungsi fclose() untuk menutup sambungan.

Ringkasan

Permintaan HTTP ialah salah satu asas pembangunan web. Artikel ini memperkenalkan fungsi permintaan http yang biasa digunakan dalam PHP dan cara menggunakannya. Memahami cara menggunakan fungsi ini boleh membantu kami melaksanakan fungsi yang sepadan dengan lebih mudah dan cekap.

Atas ialah kandungan terperinci Petua menggunakan fungsi permintaan HTTP PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan