2017-08-10 21 views
0

尝试使用PHP cURL远程检索网络摄像头图像时,出现“连接被拒绝”错误。 如果我尝试使用本地计算机浏览器中的URL检索图像,系统会提示输入凭据,然后它会显示图像。这是为什么发生?谁在请求图片时应该没有什么区别,不管是我本人还是其他服务器上的脚本,都是正确的?使用PHP cURL检索图像时拒绝连接

我的代码:

<?php 
$token = "user:password"; 
$url = "http://000.000.000.000:000/cgi-bin/image.jpg"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPGET, true); 
curl_setopt($ch, CURLOPT_USERPWD, $token); 
/*curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);*/      
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

if(curl_exec($ch) === false){ 
    echo curl_error($ch); 
}else{ 
    $data = curl_exec($ch); 
} 
curl_close($ch); 

echo "<pre>"; 
print_r($data); 
echo "</pre>"; 
?> 
+0

可能的重复[如何使用PHP curl使用HTTP基本身份验证进行请求?](https://stackoverflow.com/questions/2140419/how-do-i-make-a-request-using-http - 基本的身份验证与 - PHP卷曲) –

回答

1

这是最有可能Basic access authentication。如果你在浏览器的URL它显示了一个登录弹出,但你也可以包括这样的URL中的用户名和密码:

https://Aladdin:[email protected]/index.html 

在这种情况下,这将是:

$url = "http://user:[email protected]:000/cgi-bin/image.jpg"; 

编辑由于您使用的是curl,因此它具有发送身份验证标头的功能。

curl_setopt($process, CURLOPT_USERPWD, $username.':'.$password); 

在这种情况下:

curl_setopt($process, CURLOPT_USERPWD, $token); 

此外,请参阅this answer