1

需要从需要用户名/密码才能访问的 Web 服务中使用一些数据。

以下返回 NULL

$service_url = 'https://example.com/2365139.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);

var_dump($response);

当我在浏览器中点击https://example.com/2365139.json时,它会提示输入 un/pw,当我输入它们时,它会显示 JSON,所以数据在那里,但我上面写的东西不起作用。

4

1 回答 1

4

原始代码工作正常,但由于资源是 https 它需要以下选项;

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

使用它的警告是“这基本上会导致 cURL 盲目地接受任何服务器证书,而不对哪个 CA 签署它以及该 CA 是否受信任进行任何验证。如果你完全关心你的数据”重新传递到服务器或从服务器接收,您需要正确启用此对等验证。” - 取自http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

于 2013-01-21T00:29:43.403 回答