Rumah pembangunan bahagian belakang tutorial php PHP使用stream_context_create()模拟POST/GET请求的方法及实例分析

PHP使用stream_context_create()模拟POST/GET请求的方法及实例分析

Jun 04, 2018 am 10:35 AM
context create stream

这篇文章主要介绍了PHP使用stream_context_create()模拟POST/GET请求的方法,结合实例形式较为详细的分析了stream_context_create模拟POST/GET请求的原理,使用方法与相关注意事项,需要的朋友可以参考下

有时候,我们需要在服务器端模拟 POST/GET 等请求,也就是在 PHP 程序中去实现模拟,改怎么做到呢?或者说,在 PHP 程序里,给你一个数组,如何将这个数组 POST/GET 到另外一个地址呢?当然,使用 CURL 很容易办到,那么如果不使用 CURL 库,又该怎么办呢?其实,在 PHP 里已经有相关的函数实现了,这个函数就是接下来要讲的 stream_context_create()。

直接 show you the code,这是最好的方法:


$data = array(
    'foo'=>'bar', 
    'baz'=>'boom', 
    'site'=>'localhost', 
    'name'=>'nowa magic'); 
$data = http_build_query($data); 
//$postdata = http_build_query($data);
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type:application/x-www-form-urlencoded',
        'content' => $data
        //'timeout' => 60 * 60 // 超时时间(单位:s)
    )
);
$url = "http://localhost/test2.php";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
Salin selepas log masuk


http://localhost/test2.php 的代码为:


$data = $_POST;
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r( $data );
echo &#39;
';
Salin selepas log masuk


运行结果为:


Array
(
  [foo] => bar
  [baz] => boom
  [site] => localhost
  [name] => nowa magic
)
Salin selepas log masuk


一些要点讲解:

1. 以上程序用到了 http_build_query() 函数,如果需要了解,可以参看 前面一篇《PHP使用http_build_query()构造URL字符串的方法》。

2. stream_context_create() 是用来创建打开文件的上下文件选项的,比如用POST访问,使用代理,发送header等。就是 创建一个流,再举一个例子吧:


$context = stream_context_create(array( 
    &#39;http&#39; => array( 
        &#39;method&#39; => &#39;POST&#39;, 
        &#39;header&#39; => sprintf("Authorization: Basic %s\r\n", base64_encode($username.&#39;:&#39;.$password)). 
        "Content-type: application/x-www-form-urlencoded\r\n", 
        &#39;content&#39; => http_build_query(array(&#39;status&#39; => $message)), 
        &#39;timeout&#39; => 5, 
    ), 
)); 
$ret = file_get_contents(&#39;http://twitter.com/statuses/update.xml&#39;, false, $context);
Salin selepas log masuk


3. stream_context_create创建的上下文选项即可用于流(stream),也可用于文件系统(file system)。对于像 file_get_contents、file_put_contents、readfile直接使用文件名操作而没有文件句柄的函数来说更有用。stream_context_create增加header头只是一部份功能,还可以定义代理、超时等。这使得访问web的功能不弱于curl。

4. stream_context_create() 作用:创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。

5. stream_context_create 还能通过增加 timeout 选项解决file_get_contents超时处理:


$opts = array(
  &#39;http&#39;=>array(
  &#39;method&#39;=>"GET",
  &#39;timeout&#39;=>60,
 )
);
//创建数据流上下文
$context = stream_context_create($opts);
$html =file_get_contents(&#39;http://localhost&#39;, false, $context);
//fopen输出文件指针处的所有剩余数据:
//fpassthru($fp); //fclose()前使用
Salin selepas log masuk

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php快速排序原理与实现方法及实例分析

PHPExcel实现读取excel文件的方法及简单实例

PHP MVC框架skymvc支持多文件上传实现方法

Atas ialah kandungan terperinci PHP使用stream_context_create()模拟POST/GET请求的方法及实例分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah maksud konteks? Apakah maksud konteks? Aug 04, 2023 pm 05:27 PM

Konteks ialah maklumat persekitaran dan status apabila program dilaksanakan Ia boleh merangkumi pelbagai maklumat, seperti nilai pembolehubah, timbunan panggilan fungsi, lokasi pelaksanaan program, dan lain-lain, yang membolehkan program membuat yang sepadan. keputusan berdasarkan konteks yang berbeza dan melaksanakan operasi yang sepadan.

Bagaimana untuk menyahpepijat operasi Java Stream dalam IntelliJ IDEA Bagaimana untuk menyahpepijat operasi Java Stream dalam IntelliJ IDEA May 09, 2023 am 11:25 AM

Operasi strim ialah kemuncak Java8! Walaupun java.util.stream sangat berkuasa, masih terdapat banyak pembangun yang jarang menggunakannya dalam kerja sebenar kerana aliran tidak boleh digunakan dalam DEBUG Apabila ia adalah satu baris kod, apabila sampai ke langkah seterusnya, banyak operasi sebenarnya diluluskan sekaligus, jadi sukar untuk kita menilai baris mana yang menjadi masalah. Pemalam: JavaStreamDebugger Jika versi IDEA yang anda gunakan agak baharu, pemalam ini sudah disertakan dan tidak perlu dipasang. Jika ia belum dipasang, pasangkannya secara manual dan kemudian teruskan di bawah.

Cara menggunakan konteks untuk melaksanakan caching permintaan dalam Go Cara menggunakan konteks untuk melaksanakan caching permintaan dalam Go Jul 22, 2023 pm 10:51 PM

Cara menggunakan konteks untuk melaksanakan caching permintaan dalam Go Pengenalan: Semasa membina aplikasi web, kita selalunya perlu cache permintaan untuk meningkatkan prestasi. Dalam bahasa Go, kita boleh menggunakan pakej konteks untuk melaksanakan fungsi caching permintaan. Artikel ini akan memperkenalkan cara menggunakan pakej konteks untuk melaksanakan caching permintaan dan menyediakan contoh kod untuk membantu pembaca memahami dengan lebih baik. Apakah konteks? : Dalam bahasa Go, pakej konteks menyediakan cara untuk lulus antara berbilang goroutine

Cara menggunakan konteks untuk melaksanakan penjejakan pautan permintaan dalam Go Cara menggunakan konteks untuk melaksanakan penjejakan pautan permintaan dalam Go Jul 21, 2023 pm 05:57 PM

Cara menggunakan konteks untuk melaksanakan penjejakan pautan permintaan dalam Go Dalam seni bina perkhidmatan mikro, penjejakan pautan permintaan ialah teknologi yang sangat penting yang digunakan untuk menjejaki penghantaran dan pemprosesan permintaan antara berbilang perkhidmatan mikro. Dalam bahasa Go, kami boleh menggunakan pakej konteks untuk melaksanakan penjejakan pautan permintaan Artikel ini akan memperkenalkan cara menggunakan konteks untuk penjejakan pautan permintaan dan memberikan contoh kod. Pertama, kita perlu memahami konsep asas dan penggunaan pakej konteks. Pakej konteks menyediakan mekanisme

Bagaimana untuk mendapatkan nilai maksimum dari aliran dalam java8 Bagaimana untuk mendapatkan nilai maksimum dari aliran dalam java8 May 14, 2023 pm 03:43 PM

Strim java8 mengambil maxpublicstaticvoidmain(String[]args){Listlist=Arrays.asList(1,2,3,4,5,6);Integermax=list.stream().max((a,b)->{if ( a>b){return1;}elsereturn-1;}).get();System.out.println(maks);}Nota: Saiz ditentukan di sini melalui nombor positif dan negatif serta 0 nilai. Daripada menulisnya terus jika(a>b){returna;}elseretur

Cara menggunakan konteks untuk melaksanakan kawalan tamat masa permintaan dalam Go Cara menggunakan konteks untuk melaksanakan kawalan tamat masa permintaan dalam Go Jul 21, 2023 pm 12:18 PM

Cara menggunakan konteks untuk melaksanakan kawalan masa permintaan dalam Pengenalan Go: Apabila kami membuat permintaan rangkaian, kami sering menghadapi masalah tamat masa permintaan. Permintaan rangkaian yang tidak bertindak balas untuk masa yang lama bukan sahaja akan membazir sumber pelayan, tetapi juga menjejaskan prestasi keseluruhan. Untuk menyelesaikan masalah ini, bahasa Go memperkenalkan pakej konteks, yang boleh digunakan untuk melaksanakan kawalan tamat masa permintaan. Artikel ini akan memperkenalkan cara menggunakan pakej konteks untuk melaksanakan kawalan tamat masa permintaan dalam Go dan melampirkan contoh kod yang sepadan. 1. Fahami pakej konteks co

Cara menggunakan konteks untuk melaksanakan strategi cuba semula permintaan dalam Go Cara menggunakan konteks untuk melaksanakan strategi cuba semula permintaan dalam Go Jul 21, 2023 pm 04:39 PM

Cara menggunakan konteks untuk melaksanakan strategi cuba semula permintaan dalam Go Pengenalan: Apabila membina sistem teragih, permintaan rangkaian pasti akan menghadapi beberapa kegagalan. Untuk memastikan kebolehpercayaan dan kestabilan sistem, kami biasanya menggunakan strategi cuba semula untuk mengendalikan permintaan yang gagal ini untuk meningkatkan kadar kejayaan permintaan. Dalam bahasa Go, kita boleh menggunakan pakej konteks untuk melaksanakan strategi percubaan semula permintaan. Artikel ini akan memperkenalkan cara menggunakan pakej konteks dalam Go untuk melaksanakan strategi percubaan semula permintaan, dengan contoh kod. 1. Apa itu

Cara menggunakan konteks untuk menghantar parameter permintaan dalam Go Cara menggunakan konteks untuk menghantar parameter permintaan dalam Go Jul 22, 2023 pm 04:43 PM

Pakej konteks dalam bahasa Go digunakan untuk menghantar maklumat konteks permintaan dalam program Ia boleh menghantar parameter, memintas permintaan dan membatalkan operasi antara fungsi merentas berbilang Goroutine. Untuk menggunakan pakej konteks dalam Go, kita perlu mengimport pakej "konteks" terlebih dahulu. Di bawah ialah contoh yang menunjukkan cara menggunakan pakej konteks untuk melaksanakan penghantaran parameter permintaan. packagemainimport("konteks&quot

See all articles