在前天的介绍文章中,我们谈到了如何高效下载小文件的网络资源。您可以方便地使用file_put_contents()来发出请求。成对的函数file_get_contents()读取资源。
今天来讨论一下,有没有可能通过使用一个函数,将post请求的数据发送到服务器?
在最后一段学习时间里,我们已经提出有一个功能可以用来读取网络资源,就是间接发起网络请求。默认的file_GET_contents()是使用GET请求。如果是POST请求,也应该做。但是怎么写呢?
file_get_contents()函数是将文件内容读入字符串的首选方法。如果操作系统支持,将使用内存映射技术来增强性能。
这些参数如下:
string file _ get _ contents(string $ filename[,bool $use_include_path = false[,resource $context[,int $offset = -1[,int $maxlen]]])
复杂函数,我们需要汇编以下参数。我们需要使用流操作的上下文context来传入这个函数。
首先,构造请求的参数,即键值对。这里,您需要使用 amp进行多参数连接:
$ postdata = '));
接下来,构建请求结构:
$ opts = array(');
最重要的步骤是创建一个基于流的上下文,使用
$ context = stream _ context _ create($ opts);
写到这里,“万事俱备只欠东风”。我们知道主题函数处理这些参数:
$ result = file _ get _ contents(');
之后,结果或错误内容将被输出到$result对象。True使用判断,或者使用已知的接口返回数据类型以便进一步处理。
前面部分的深入定制没有考虑网络超时、接口授权等等。在本节中,我们将讨论一个更复杂的问题,它需要处理上传的数据。
或者首先裁剪请求正文:
$ opts = array(');
注意,我们向请求添加了一个头,这是根据目标url的要求添加的。$body是上一节中的$postdata结构类型。
然后创建流上下文:
$ context = stream _ context _ create($ opts);
最后一个调用函数:
$ URL = ';
$result = file_get_contents($url,false,$context,-1,40000);
写到最后,通过以上两个细节的函数处理,你对file_get_contents()有更深一层的认识了吗?原来这家伙还能这么用。真的是大开眼界!
快乐编码:_)
我是@程序员助手,一直在分享编程知识。欢迎关注。