PHP: подключение к SOAP серверу с использованием как сертификата, так и аутентификации - PullRequest
0 голосов
/ 07 апреля 2020

Я пытался получить данные с сервера через SOAP, используя как файлы сертификата (.crt и .key), так и аутентификацию, он продолжает выдавать ошибку «Не удалось подключиться к хосту».

Вот код я использовал

$cert = '/path/to/my/cert.crt'; //.key file is in the same directory
$url = "https://url.com/non-wsdl-path";
try {
    $soapClient = new \SoapClient(null, array(
        "trace" => 1, 
        "exception" => 1,
        "local_cert" => $cert,
        "location" => $url,
        "uri" => $url,
        "login" => "user",
        "password" => "pass",
    ));
    $params = array(
        'var1' => 00100,
        'var2' => 13,
        'var3' => 0375,
        'var4' => 1234,
        'var5' => 13
    );
    $soapResponse = $soapClient->__soapCall("functionName", $params);
}
catch (Exception $e) {
    var_dump($e);
}

Вот XML, который я использовал в почтальоне, который прекрасно работает (.crt уже в настройке почтальона)

POST для https://url.com/non-wsdl-path

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:esv="http://other-url.com">
<soap:Header/>
<soap:Body>
    <esv:functionName>
        <functionNameInput>
            <dataInput>
                <var1>00100</var1>
                <var2>13</var2>
                <var3>0375</var3>
                <var4>1234</var4>
                <var5>13</var5>
            </dataInput>
            <authenticationInput>
                <userId>user</userId>
                <password>pass</password>
            </authenticationInput>
        </functionNameInput>
    </esv:functionName>
</soap:Body>

...