CURL错误401 - PHP版本是否会导致此问题?

时间:2011-05-18 17:27:29

标签: php soap curl

我有以下代码:

$body = "<SOAP-ENV:Envelope>".$data."</SOAP-ENV:Envelope>";
$ch = curl_init($FD_Add);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "WS******._.1:********");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSLCERT, DIR_ROOT."ABCDEFG/Certs/WS******._.1.pem");
curl_setopt($ch, CURLOPT_SSLKEY, DIR_ROOT."ABCDEFG/Certs/WS******._.1.key");
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "ckp_***********");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if($test_env){echo 'The result of your request is:<RESULT>'.$result.'</RESULT>br/>' ;}
curl_close($ch);

响应是错误401 HTTP需要身份验证。我已验证用户ID和密码是否正确。我首先想知道的是,如果PHP的版本不支持CULROPT_AUTH,那么PHP的版本可能会导致此错误,因为我正在运行PHP~v。 3.4我所阅读的内容并不支持此选项。

有人知道这可能是麻烦吗?

1 个答案:

答案 0 :(得分:3)

您可以通过自己发布基本身份验证标头来伪造它:

$auth_header = "Authorization: Basic " . base64_encode("$user:$pass");
curl_setopt($ch, CURLOPT_HTTP_HEADER, $auth_header);

但这仅限于Curl 7.10.3及更高版本。你的石器时代PHP最有可能使用同样石器时代的CURL。

真的...... PHP 3.4相当于在从摩登原始人购买的汽车中驾驶。你应该升级到更现代化的东西,比如Model-T ......那些无马的车厢非常令人印象深刻。