在访问REST API时,这两段代码有何不同?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
和
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
它们都产生相同的结果,判断
print_r(json_decode($result))
4条答案
按热度按时间gev0vcfq1#
file_get_contents()
是一个简单的螺丝刀。非常适合简单的GET请求,其中头部,HTTP请求方法,超时,cookiejar,重定向,和其他重要的事情都不重要。fopen()
与stream context或cURL与setopt是电钻,具有您能想到的每一个位和选项。nhaq1z212#
除此之外,由于最近的一些网站黑客攻击,我们不得不加强网站的安全性。在这样做的过程中,我们发现
file_get_contents
无法工作,而curl
仍然可以工作。不是100%,但我相信这个php.ini设置可能已经阻止了
file_get_contents
请求。无论哪种方式,我们的代码现在都可以使用
curl
。btxsgosb3#
这是一个老主题,但在我的一个API上的最后一次测试中,cURL更快,更稳定。有时较大的请求需要超过5秒的file_get_contents,而cURL只需要1.4到1.9秒,速度是原来的两倍。
我需要补充一点,我只是发送GET和接收JSON内容。如果你正确设置cURL,你会得到很好的响应。只要“告诉”cURL你需要发送什么,你需要接收什么,就这样。
以您的示例为例,我将执行以下设置:
此请求将在最多0.10秒内返回数据
nhhxz33t4#
我知道这是一个老主题,但我相信这真的很重要。现在,有很多不同的8年多前。我们都知道,Curl是第三方库。
简单比较:Curl库的最新版本有超过170个不同的函数,能够向API发送正确的请求。8年前只有70个函数。事实:仍在开发中。
这就是为什么我想对这个问题提出一个新的评论。
什么是文件获取内容()
file_get_contents()是PHP中的一个文件系统函数,你可以从一个文件中读取内容,并使用GET和POST方法发出请求。你可以在使用file_get_contents()函数的同时向请求中添加参数。你可以看到下面的示例。
什么是curl()
Curl是一个开源的第三方库。你可以从here访问git repo。这个函数“模拟”HTTP请求和响应。这个模拟允许你处理异步HTTP请求和复杂的数据传输。另外,Curl适合执行基于跨域的FTP请求。它可以用在各种应用程序中,比如从网站抓取数据和设置代理。
让我们检查一个CURL请求语法。
**注意:**这是curl请求的基本示例。您可以使用curl对象的函数(如CURLOPT_HTTPHEADER,CURLOPT_SSL_VERIFYPEER)向curl对象添加更多参数和选项。这些类型的参数完全取决于您和您尝试使用的服务。
CURL与file_get_contents()的比较
CURL
能够处理复杂的HTML通信,但file_get_contents()
不能。CURL
支持HTTP PUT、GET、POST,但file_get_contents()
支持简单的HTTP GET和HTTP POST请求。CURL
支持缓存和cookie,但file_get_contents()
不支持缓存、cookie等。CURL
能够使用HTTP、HTTPS、FTP、FTPS和more。file_get_contents()
使用HTTP和HTTPS协议进行通信。CURL
可用于从服务器读取、更新和删除文件,但file_get_contents()
只允许您读取文件。CURL
比file_get_contents()
更安全、更快CURL
比file_get_contents()
更难理解。