如何在 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 请求的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cURL 在 PHP 中发出 PATCH 请求?

如何在改造中使用 ssl 证书发出 https 请求

如何在 symfony2 功能测试中发出 https 请求?

如何使用 PHP 向网页发出请求?

如何使用PHP发出简单的SAML请求?

如何发出 PHP CORS 请求?