如何在 PHP 中发出 Https 请求
Posted
技术标签:
【中文标题】如何在 PHP 中发出 Https 请求【英文标题】:How to make Https Requests in PHP 【发布时间】:2012-12-14 01:52:58 【问题描述】:我仍然对 php 不是很满意,而且对 Json 完全陌生。我想做的是检查特定的 Twitch.tv 直播是否在线,我也想吸引观众。 Twitch.tv 有自己的 API (https://github.com/justintv/Twitch-API/wiki/API),这应该是可能的。这是我的第一种方法:
// Twitch Streams
else if($typ == 't')
$api = file_get_contents("https://api.twitch.tv/kraken/streams/".$stream_id);
$json = json_decode($api);
if($json->stream != null)
return true;
else
return false;
问题是 file_get_contents 似乎不理解 https,它声称没有安装包装器。问题是API不支持正常的http请求,所以我想我必须使用另一个函数。有人可以建议我一个不同的(不太难使用)功能。我已经阅读了 curl 和 fsocket,但它们对我来说似乎有点难以使用。
【问题讨论】:
简单并不总是更好。 :) 阅读 cURL。你会得到它的窍门。 你应该使用 curl 库。 php.net/manual/en/book.curl.php 见***.com/questions/2305954/… 【参考方案1】:https://
可能未启用。这篇文章可能会帮助您找出原因:How to get file_get_contents() to work with HTTPS?。没有理由必须使用 cURL,但 cURL 通常更灵活,所以如果您能够理解它的工作原理,我建议您改用它。
【讨论】:
它们中的任何一个都不适合我。我启用了 php_openssl.dll 并在 php.ini 中写了 allow_url_include = On 。还是同样的错误。卷曲对我也不起作用:PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.13/ext/php_curl.dll' - The application has failed to start because its side-by-side configuration is incorrect.
是否有另一种(不那么错误)方法可以做到这一点?
确实如此。摆脱 WAMP;它的标准配置很糟糕,这可能会导致您的错误。如果您手动安装 Apache/PHP,它可能会更容易使用。 PHP 安装程序还可以为您配置 cURL 和其他扩展,这样您就不会自己搞砸了。 =) 旁注:加载 cURL 时导致此确切错误的原因可能是文件系统中放错位置的 .dll 或错误的读取/执行权限。
感谢我已经让 ssl 工作的建议,我必须在 apache 文件夹中的 php.ini 中启用扩展才能使其运行。到目前为止,我实际上很喜欢 Wamp,我认为它至少比 Xamp 好很多。【参考方案2】:
PHP Curl 应该能够帮助解决这个问题。
以下链接说明了如何获取 http 代码: http://php.net/manual/en/function.curl-getinfo.php
【讨论】:
所以我现在尝试使用Curl ...首先出现以下错误Fatal error: Call to undefined function curl_init()
谷歌搜索了一下我发现,对于我的版本,我必须取消我在php.ini中的curl扩展名确实,比以下错误:PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.13/ext/php_curl.dll' - The application has failed to start because its side-by-side configuration is incorrect.
我发现这是 wamp 的一个问题,并在anindya.com 上找到了一个修复程序,这使得我的 php 不再工作了。 SO FU卷曲!!!
大声笑,这不是 cURL 的错,您的环境没有配置为使用它。我是 Zend Server 的粉丝,因为它使管理环境变得更加容易。以上是关于如何在 PHP 中发出 Https 请求的主要内容,如果未能解决你的问题,请参考以下文章