PHP CURL 不返回任何内容

2022-08-30 14:46:52
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身份验证的东西。

我错过了一些简单的东西还是什么?


答案 1

从这样做开始,看看你得到了什么,之后问题就很明显了:

检查curl_exec后的请求是否存在错误:

if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
}

这将为您提供足够的信息,以了解请求是否存在错误。如果没有错误,您可以检查curl_exec后发送的请求,以便仔细检查发送的所有内容是否都已就位:

print_r(curl_getinfo($ch));

编辑:在评论之后,这就是你正在寻找缺少的东西:

您需要设置选项 。CURLOPT_HTTPAUTH

引用 php.net 关于这个主题:

要使用的 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。


答案 2

推荐