Это возникает из-за того что кодировка текста (логина и пароля) отличается от той что понимает web-сервис 1С (UTF-8).
Для решения данной проблемы, необходимо при создании экземпляра класса "SoapClient" в "stream_context" передать "правильный" заголовок с данными авторизации "Authorization".
Формирование "правильной" строки авторизации:
$base64LoginData = base64_encode(iconv(mb_detect_encoding($login, mb_detect_order(), true), "UTF-8", $login).":".iconv(mb_detect_encoding($password, mb_detect_order(), true), "UTF-8", $password));
В прикрепленном файле находится пример PHP класса, который выполняет авторизацию и вызов метода web-сервиса с возвратом данных в формате JSON.
Пример использования
require(‘web_service.php’);
$_SESSION["login"] = "Администратор";
$_SESSION["password"] = "йцукен";
$dataArray = array("Name" => "Имя1", "Data" => "Значение1");
$jsonString = json_encode($dataArray, JSON_UNESCAPED_UNICODE);
$soapResult = $ws_client->call("GetData", array("RefListMod" => $_POST[‘sys_lref’], "Ref" => $_POST[‘sys_ref’], "Data" => $jsonString));
if ($soapResult["result"])
{
$soapString = str_replace("
", "", $soapResult["data"]->return);
$jsonData = json_decode($soapString);
}