php api 教程,PHP用1个函数实现post请求?
引言
前天的文章,我们说到了如何高效的下载网络资源,对于小体积的文件。可以便捷的使用 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,传入该函数。
首先构造请求的参数,也就是键值对,这里需要使用 & 进行多参数连接:
$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 :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
api用什么框架?
可以用Lumen 一个由 Laravel 组件搭建而成的微框架
如何高效迅速掌握PHP知识架构和积累开发经验?
身为一个资深开发,我认为第一阶段1-2年的PHPer知道如何使用工具、项目版本如何控制、接触并能够使用YII/tp/laravel等框架完成项目等等
第二阶段2-3年的PHPer除了写代码还需要热衷于学习各种技术实现、不仅对项目熟悉,还要能解决性能问题。只有深入学习PHP优化,Swoole接口,微服务,Mysql底层优化等,才能保持核心竞争力,拥有一份不错的薪资!
第三阶段4-5年的PHPer技术体系需要逐渐往大型层次进阶, 有效、高速的处理从很小到非常大的项目管理,随着我们的业务量越来越大和越高并发,分布式缓存、RPC、API架构设计等技术都必将掌握!
能具备以上技术能力绝对可以从一个Coder逐步走向CTO或是架构师,那么比较迷茫跟能力不足的程序员该怎么去学习呢?我特地为大家准备了一套精品PHP架构师进阶路线,保证你学了以后保证薪资上升一个台阶。需要可关注本头条号,并且发送私信:PHP
php如何与摄像头实现接口?
php是肯定不能和客户端摄像头通讯的吧。
除非借助别的东东 因为PHP是一种服务端技术呀php的基本介绍?
PHP原始为Personal Home Page的缩写,现已正式更名为Hypertext Preprocesso,中文名称为超文本预处理器。
是一种通用开源脚本语言,PHP是在服务器端执行的脚本语言,主要适用于Web开发领域,随着移动应用的兴起,PHP也可用于开发API接口。
以上就是关于php api 教程以及PHP用1个函数实现post请求的相关回答,有更多疑问可以加微。