function ParseUrl($URL)
{
$crl = curl_init();
curl_setopt ($crl, CURLOPT_URL, $URL);
curl_setopt ($crl, CURLOPT_PORT, 8086);
curl_setopt ($crl, CURLOPT_USERPWD, "admin:pass");
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, 5);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
echo ParseUrl('http://xxx.me/serverinfo');
上面的代码简单地不返回任何内容。我尝试使用curl获取的页面使用http身份验证。
我是不是漏掉了什么简单的东西?
发布于 2011-06-13 05:39:40
从这样做开始,看看你得到了什么,然后问题就很明显了:
检查curl_exec之后的请求是否有错误:
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
这将为您提供足够的信息,以了解请求是否存在错误。如果没有错误,您可以检查在curl_exec之后发送的请求,这样您就可以再次检查发送的所有内容是否都到位:
print_r(curl_getinfo($ch));
编辑:在评论之后,这就是你正在寻找的缺失内容:
您需要设置选项CURLOPT_HTTPAUTH
。
Quote from php.net on the subject:
要使用的超文本传输协议身份验证方法。选项包括: CURLAUTH_BASIC、CURLAUTH_DIGEST、CURLAUTH_GSSNEGOTIATE、CURLAUTH_NTLM、CURLAUTH_ANY和CURLAUTH_ANYSAFE。
按位运算符|(或)可用于组合多个方法。如果这样做了,cURL将轮询服务器,看看它支持哪些方法,并选择最好的方法。
CURLAUTH_ANY是CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM的别名。
CURLAUTH_ANYSAFE是CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE |CURLAUTH_NTLM的别名。
https://stackoverflow.com/questions/6324819
复制相似问题