cURL使用https获得401.2错误

时间:2013-12-16 10:03:25

标签: php curl https iis-6 ntlm

我尝试了我在这里找到的所有东西,但没有任何帮助。 我试图通过HTTPS连接到IIS6.0 * .svc文件。这是我的代码:

$ch = curl_init();
$curl_options = array(
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_TIMEOUT => 6,
    CURLOPT_URL => $url
);

if(isset($options['login'])){
    $options[CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
    $options[CURLOPT_UNRESTRICTED_AUTH] = true;
    $options[CURLOPT_USERPWD] = $login;
}

if(isset($options['params'])){
    array_walk($options['params'], 'curl_escape', $ch);
    $curl_options[CURLOPT_POST] = true;
    $curl_options[CURLOPT_POSTFIELDS] = $options['params'];
}

curl_setopt_array($ch, $curl_options);
$content = curl_exec($ch);
curl_close($ch);

我唯一得到的是401.2错误,说服务器不喜欢我的身份验证方法。 我也尝试了$options[CURLOPT_HTTPAUTH] = CURLAUTH_ANY;,但这也没有用。

使用user:pw正确格式化凭据,并且100%正确。 问题是:使用浏览器访问页面没问题,并给我正确的xml输出。

任何想法?

1 个答案:

答案 0 :(得分:0)

  1. 请尝试使用https:

    curl_setopt($ ch,CURLOPT_SSL_VERIFYHOST,true);

  2. 使用CURLOPT_USERPWD时,请确保您的$ login的值为username:password format。

  3. 使用CURLAUTH_BASIC代替CURLAUTH_NTLM