Задать вопрос
@TheIrishMan

Авторизация в 1С и soap-сервис?

Добрый день.
1С-ники написали мне soap сервис для интеграции 1с и некоторых самописных систем.
Мы опубликовали базу, проверили через браузер - сначала идёт страница авторизации. Авторизовались и получили доступ к самому сервису и файлу wsdl.
Теперь я пытаюсь на php написать сервис, который будет работать с soap и дальше обрабатывать полученные данные.
Я попробовал пакет soap для php8.2-fpm и прямые curl вызовы. Результат: соединение не проходит, как будто я не правильно делаю авторизацию.
Пример кода:
$ch = curl_init('<здесь указан рабочий url>');

curl_setopt_array($ch, [
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $xml,
    CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
    CURLOPT_USERPWD => 'username:password',
    CURLOPT_HTTPHEADER => [
        'Content-Type: text/xml; charset=utf-8',
    ],
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
]);

$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);

if ($error) {
    echo "Ошибка: $error";
} else {
    echo $response;
}


Я не знаю платформу 1С-предприятие. Подскажите, как пройти авторизацию правильно?
Из ошибок: при использовании soap пакета - SOAP-ERROR: Parsing WSDL: Couldn't load from '<здесь указан рабочий url>' : failed to load external entity
При использовании прямого вызова curl - просто отваливается по таймауту.

Допускаю, что дело не только в авторизации. Если так - ткните меня носом как котёнка).

UPD: используется нестандартный порт 10443
  • Вопрос задан
  • 164 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    PHP (pro)
    1 месяц
    Далее
Решения вопроса 1
@TheIrishMan Автор вопроса
Забейте, порт закрыт наружу...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У меня через soap подключается так:
$soap = new SoapClient(
    $wsdlURL,
    [
        'login' => $user,
        'password' => $password,
        'cache_wsdl' => 0,
    ],
);

Когда-то боролся с подключением, заработало после добавления параметра cache_wsdl.
Ответ написан
opium
@opium
Просто люблю качественно работать
Таймаут на голом curl — это не про авторизацию, 401 обычно прилетает сразу. Похоже сервер с php-fpm просто не достаёт до адреса 1С-сервиса: другой сетевой маршрут или файрвол, чем у браузера, с которого всё работало. Плюс для прямого POST без SoapClient нужен заголовок SOAPAction, без него некоторые публикации 1С просто виснут вместо ответа. Глянь curl -v с полным логом соединения и проверь что порт открыт именно с сервера, где крутится php-fpm.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы