这是我在远程服务器上使用的BASH命令 -
curl -i -H "Content-Type: application/json" -H "Authorization: USERNAME:PASSWORD" "https://api7.publicaster.com/Rest/Ping.svc/?format=json"
这是我的PHP脚本上的代码,我在WAMP本地测试环境中运行以请求相同的信息。
header("Content-Type: application/json");
$encrypted_account_id = 'USERNAME';
$api_password = 'PASSWORD';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://api7.publicaster.com/Rest/Ping.svc/?format=json");
$headers = array();
$headers[] = 'Content-type: application/json';
$headers[] = 'Authorization: $encrypted_account_id:$api_password';
curl_setopt($ch, CURLOPT_HEADER, $headers);
$server_output = curl_exec($ch);
curl_close($ch);
print_r($server_output);
如果在我的PHP脚本上我请求HTTP站点,那么它返回 -
HTTP/1.1 401 Unauthorized
Cache-Control: private
如果在我的PHP脚本上我请求HTTPS站点,那么它只返回空白。我有一个自签名SSL证书并启用了SSL,我可以访问我的WAMP服务器的HTTPS部分,但是我收到了警告。
我无法弄清楚这是我的代码还是我的WAMP服务器的问题。有什么想法吗?
如果我将以下内容添加到我的代码并尝试CURL HTTPS地址,我至少会收到响应,但它是未经授权的CC:私有错误 -
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
答案 0 :(得分:9)
我想我找到了答案,问题是你的curl请求无法验证ssl peer。 Windows不会自动拥有CA证书来进行验证。
所以这就是我通过curl为wamp修复我的https请求所做的工作。
在此处下载 cacert.pem 文件http://curl.haxx.se/docs/caextract.html并将其放在您的PHP文件夹中,我的位于:
C:\wamp\bin\php\php5.5.12
现在打开php.ini文件,找到以。开头的行
; curl.cainfo =
取消评论该行"删除;在前面"并添加cacert.pem文件的绝对路径。我看起来像这样:
curl.cainfo = C:\wamp\bin\php\php5.5.12\cacert.pem
现在重启wamp并瞧!我可以通过curl on wamp愉快地打开https协议。