jM2*_*.me 24 php curl http-authentication
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');
Run Code Online (Sandbox Code Playgroud)
上面的代码根本不返回任何内容 我试图通过curl获取的页面使用http身份验证.
我错过了一些简单或什么?
rze*_*erg 58
通过这样做开始,看看你得到了什么,之后问题是很明显的:
检查curl_exec后请求是否有错误:
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供足够的信息,以了解请求是否有错误.如果没有错误,您可以检查curl_exec之后发送的请求,以便您可以仔细检查发送的所有内容是否到位:
print_r(curl_getinfo($ch));
Run Code Online (Sandbox Code Playgroud)
编辑:评论后,这是你正在寻找缺少的东西:
您需要设置选项CURLOPT_HTTPAUTH.
要使用的HTTP身份验证方法.选项包括: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.