1

我正在尝试通过 PHP 连接到 IIS Web 服务器上的 smartystreets API(liveaddress)。我从这里复制了 file_get_contents 和 cURL 示例:SmartyStreets github PHP 示例。它们都不起作用。如果我将 URL 直接粘贴到浏览器中,它确实有效。file_get_contents 示例返回:

Warning: file_get_contents(https://api.qualifiedaddress.com/street-address/?street=817+Quail+Ln.+%2312+bakersfield%2C+ca+93309&auth-token=5Nk1%2FA) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Inetpub\includes\myclass.php on line 28

我已经在 phpinfo 中确认 allow_url_fopen 已打开。我也尝试过设置 user_agent。尽管如此,这仍然行不通。

cURL 示例返回 false。

这可能与IIS有关吗?或者可能是由于防火墙设置?如果是这样,我如何找出要打开的端口?还有其他可能吗?谢谢!

4

3 回答 3

3

尝试这个。通常使用它就足够SSLcURL它是某种 min./default/simple/widespread ;) 用于 API 的SSL 配置),但无论如何它取决于提供者 SSL 配置。

curl_setopt($ch, CURLOPT_SSLVERSION, 3); // OpenSSL issue
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  // Wildcard certificate
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

如果它不起作用,请尝试了解smth。关于SSL configuration of your provider,您一定会找到解决方案。

于 2012-07-25T21:51:49.883 回答
0

我终于让 cURL 工作了。问题是该链接正在使用 SSL(网址中的 https)。我通过回显 curl_error($ch); 发现了这一点。我添加了这个 cURL 选项,它运行良好:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

我不确定 file_get_contents 不起作用的原因是否与此有关。

于 2012-07-25T21:43:28.067 回答
0

该网络服务需要授权。

有关如何通过身份验证详细信息的详细信息,请参阅curl_setopt手册。

于 2012-07-25T10:33:08.680 回答