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身份验证。
我错过了一些简单或什么?
答案 0 :(得分:56)
首先这样做,看看你得到了什么,之后问题就是很明显:
在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:
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。