使用php从API发出curl请求
我需要在PHP中使用curl从API获取数据,但我没有这方面的经验 我使用PHP已经有一段时间了(beginer/intermediate level),但我不知道如何使用curl命令或如何制作PHP版本 我对API的了解是,要获得我可以使用的所有书籍的列表:使用php从API发出curl请求,php,api,curl,Php,Api,Curl,我需要在PHP中使用curl从API获取数据,但我没有这方面的经验 我使用PHP已经有一段时间了(beginer/intermediate level),但我不知道如何使用curl命令或如何制作PHP版本 我对API的了解是,要获得我可以使用的所有书籍的列表: curl --request GET \ --url 'http://example.com/{identifier}' 使用“main”作为{identifier} 这应该给我一个所有书的清单,然后我可以使用它 curl --requ
curl --request GET \
--url 'http://example.com/{identifier}'
使用“main”作为{identifier}
这应该给我一个所有书的清单,然后我可以使用它
curl --request GET \
--url 'http://example.com/feed/{identifier}'
获取书籍的(元数据)(标题、作者、描述、年份、封面)
我试过使用$curl=curl\u init(“http://example.com/feed/main");
然后使用curl\u setopt\u array($curl,array()
获取数据,但我得到一个“出于安全原因禁用了警告curl\u init()”错误
我完全不知所措,从零开始处理这些API/curl调用
希望有人能给我解释一下
(在Windows上使用Xampp)
;extension=php_curl.dll
;
来取消注释<?php
// Test if cURL is enabled
echo 'Curl: ', function_exists('curl_version') ? 'Enabled' . "\xA" : 'Disabled' . "\xA";
?>
首先为xamp启用curl。要执行此操作,请执行以下步骤
1.转到C:\Program Files\xampp\php\php.ini
2.通过删除分号,取消对php.ini文件中的以下行的注释。
;extension=php_curl.dll
到extension=php_curl.dll
3.重新启动apache服务器 然后用户thr curl-like
$url= "http://example.com/feed/main";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING, ""); // this will handle gzip content
$result = curl_exec($ch);
curl_close($ch);
print $result;
如果您只是执行一个简单的
GET
来提取数据,那么如果未禁用fopen()
http/https包装,则可以使用file\u GET\u contents()
。请参阅
如果需要在标头中设置身份验证令牌,请先定义cookie等。然后需要先设置/创建上下文
不幸的是,file\u get\u contents()
仅适用于get
请求。如果您最终需要执行POST
、PUT
、或DELETE
,那么您需要让curl
用于PHP安装,或者使用系统的curl
和exec()
或类似。尽管出于安全原因禁用了curl
,但我怀疑您是否可以使用exec()
和friends.(关于StackOverflow有很多类似的问题,但对于我看过的所有问题,答案的质量都不是很好,因此没有将其标记为重复)
我不能告诉你为什么在你正在使用的安装中它被禁用了,但是基本的托管软件包通常会限制功能级别和应用程序与本地基础设施交互的能力。我想认真的软件包维护人员也会使用安全的defa分发PHP尽可能多的配置
我完全不知所措,从零开始处理这些API/curl调用
这里有两个问题-您对这应该如何工作的理解以及阻止代码运行的错误消息。如果我们担心后者,那么至少您可以自己解决前者
警告:出于安全原因,已禁用curl_init()
此消息表示启用了安全模式,或者PHP.ini中的禁用函数列表中包含curl_init
如果您不知道php.ini文件在哪里,请检查
<?php phpinfo();
在这里查看禁用curl的可能解决方案……因为PHP只在MSWindows上运行/OP说他们正在使用MSWindows?这是修复禁用函数(与未加载函数相反)的正确方法OP没有说,但如果他使用Xamp,那么对他来说,这是正确的解决方案吗?抱歉。没有指定我使用的是哪个环境,但我在Windows上使用的是xampp…Curl在php.ini中被注释掉是出于某种原因?Curl代码可以工作,并给我一个包含项的字符串。我想我只能使用explode()
要将字符串转换为数组()
或者有更好的方法吗?我得到了这样的字符串[“新书”、“畅销书”、“幻想”、“浪漫”]尝试使用curl\u setopt\u数组()
但是这不起作用,因为curl API调用返回字符串?使用str\u replace()
和explode()修复了它
将其转换为数组()
。好的,你知道了:)这实际上是一个非常简单的解决方案,因为我只需要使用GET
。但是由于我的问题包括curl\u init()
警告和使用curl,我必须选择另一个答案作为解决方案(但你的答案也很有效)。谢谢。
<?php
print ini_get('disable_functions')
. "<br>" . ini_get('disable_classes')
. "<br>" . init_get('safe_mode');