我正在尝试通过PHP连接到IIS Web服务器上的smartystreets API(liveaddress)。我从这里复制了file_get_contents和cURL示例:SmartyStreets github PHP examples。它们都不起作用。如果我将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的问题吗?或者可能是由于防火墙设置?如果是这样,我如何找出要打开的端口?还有其他可能性吗?谢谢!
答案 0 :(得分:3)
试试这个。通常只需让SSL
使用cURL
(它是某种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
,您一定会找到解决方案。
答案 1 :(得分:0)
该网络服务需要授权。
有关如何传递身份验证详细信息的详细信息,请参阅curl_setopt
manual。
答案 2 :(得分:0)
我终于让cURL工作了。问题是链接使用SSL(URL中的https)。我通过回应curl_error($ ch)发现了这个;我添加了一个cURL选项,它运行得很好:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
我不确定file_get_contents不起作用的原因是否与此有关。