PHP Soap проблема: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 или SSL: сброс соединения по пиру - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь выполнить SOAP запрос,

  1. запрос хорошо работает на Soap Пользовательский интерфейс дает правильный ответ, - копирование вставки полезной нагрузки из попыток ниже
  2. запрос не работает на Почтальон выдает Could not get any response ошибка
  3. запрос не работает с использованием php Библиотека SoapClient дает SoapClient::__doRequest(): SSL: Connection reset by peer ошибка
  4. запрос не работает с использованием php curl дает OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 ошибка

все готово пытается SoapClient в режиме без wsdl, с другой опцией проверки ssl, и пытается на удаленном сервере, поэтому нет проблем с rnet подключением.

это код для пункта 3:

$this->client = new \SoapClient($this->wsdl, [
            'soap_version' => SOAP_1_1,
            'exceptions' => true,
            'trace' => true,
            'cache_wsdl' => WSDL_CACHE_NONE,
        ]);

$response = $this->client->__doRequest(trim($xml), $url, 'getReport', SOAP_1_1);

это код для пункта 4:

 $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); // both 0 & 1 not works
        curl_setopt($ch, CURLOPT_URL, $location);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); // also tries different values
        curl_setopt($ch, CURLOPT_TIMEOUT, 15); // here too
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, trim($request));

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);

        curl_setopt($ch, CURLOPT_HEADER, 1); // also not works without this
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // and this

        $response = curl_exec($ch);

что я могу сделать, чтобы более глубоко отладить эту проблему и решить ее?

1 Ответ

0 голосов
/ 17 апреля 2020

получается, что значение заголовка SOAPAction должно быть в дополнительной экранированной кавычке, например:

$headers = [
   "SOAPAction: \"http://example-url.com\"",
]
...