我有以下代码:
$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我所阅读的内容并不支持此选项。
有人知道这可能是麻烦吗?
答案 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 ......那些无马的车厢非常令人印象深刻。