file_get_contents返回401的问题
今天工作时遇到个比较奇怪的问题。
Axis的网络摄像头。
有HTTP基本身份验证。
以前获取图像都是用http://user:pass@ip/…… 这样的方式去获取,也没有出现过什么问题。
直到今天。摄像头莫名其妙自己升级了固件(千万只XXX在心中奔腾而过……)
就导致了获取图像时出现了401错误。
翻遍了Axis的手册也没查出个所以然。
于是用CURL重写了这里。
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $imageUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ; curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch);
注意这里
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ;
之前尝试用CURLAUTH_BASIC竟然不!好!用!!!
不知道Axis这个固件到底干了啥……
已经给Axis发邮件了……等待回复中……
[danger]
有懂为啥的,麻烦给留个言。
不胜感激。
[/danger]
另外,不想把用户密码写在网址中的,可以这样:
(我的那个是因为不想改配置文件,就凑服用了。。。。。)
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $imageUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass"); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ; curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch);