本日我们谈论一下,有没有一种可能,利用一个函数,就可以给做事器发送post要求的数据呢?

学习韶光

上一段中我们已经提示了,有一个函数可以用于读取网络资源,也便是间接的发起网络要求。
默认 file_get_contents() 是利用 GET 要求,如果是POST要求按道理也该当做的来。
不过要怎么写呢?

file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。
如果操作系统支持还会利用内存映射技能来增强性能。

php请求post3分钟短文  有挑衅PHP用1个函数实现post要求你用哪个 AJAX

其参数形式如下:

string file_get_contents( string $filename[, bool $use_include_path = false[, resource $context[, int $offset = -1[, int $maxlen]]]] )

繁芜的功能,我们须要组装后面的参数即可。
我们须要利用流操作的高下文 context,传入该函数。

首先布局要求的参数,也便是键值对,这里须要利用 & 进行多参数连接:

$postdata = http_build_query( array( 'name' => 'joe', 'age' => '13' ));

接着布局要求构造体:

$opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $postdata ));

最主要的一步,创建基于流的高下文,利用

$context = stream_context_create($opts);

写到这里就“万事俱备只欠东风”了。
我们隆重地清楚主旨函数处理这些参数:

$result = file_get_contents('http://example.com/submit.php', false, $context);

之后结果,或者缺点内容,就会输出到 $result 工具。
利用 false 判断,或者利用已知的接口返回数据类型,进一步处理。

深度定制

上一节的内容并没有考虑网络超时,接口授权,等等环境。
本节我们说一个繁芜度高一些的,哀求处理一个https要求,并配置了 basic auth 的 url,并利用 post 上传数据。

首先还是裁剪要求体:

$opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: text/xml\r\n.Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n", 'content' => $body, 'timeout' => 60 ));

把稳我们在要求上添加了 header,这是根据目标 url 的哀求添加的。
$body 便是上一节中的 $postdata 构造类型。

接着创建流高下文:

$context = stream_context_create($opts);

末了调用函数:

$url = 'https://'.$https_server;$result = file_get_contents($url, false, $context, -1, 40000);写在末了

通过上面两个细节的函数处理,大家是不是对 file_get_contents() 有了更加深入的意见,原来这家伙还可以这么用,真是开了眼界!

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。