SoapFault exception: Could not connect to host

后端 未结 27 1518
-上瘾入骨i
-上瘾入骨i 2020-12-01 07:47

Sometimes fail to call the web service.

This problem happens all the time.

What could be the problem?

Error:
    SoapFault exception: [HTTP]          


        
相关标签:
27条回答
  • 2020-12-01 08:21

    For those who struggled the same as me with laravel artisan console command that makes a lot of requests to same wsdl of external soap server and then after some time fails with Could not connect to host error.

    The problem was because I was creating new SoapClient instance each time before request was made. Do not do that. Create it once and make each request from the same client.

    Hope it helps.

    0 讨论(0)
  • 2020-12-01 08:21

    For me it was a certificate problem. Following worked for me

    $context = stream_context_create([
        'ssl' => [
            // set some SSL/TLS specific options
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        ]
    ]);
    
    $client  = new SoapClient(null, [
        'location' => 'https://...',
        'uri' => '...', 
        'stream_context' => $context
    ]);
    
    0 讨论(0)
  • 2020-12-01 08:21

    Version check helped me OpenSSL. OpenSSL_1_0_1f not supported TSLv.1_2 ! Check version and compatibility with TSLv.1_2 on github openssl/openssl . And regenerate your certificate with new openssl

    openssl pkcs12 -in path.p12 -out newfile.pem
    

    P.S I don’t know what they were minus, but this solution will really help.

    0 讨论(0)
  • 2020-12-01 08:22

    In my case the host requires TLS 1.2 so needed to enforce using the crypto_method ssl param.

    $client = new SoapClient($wsdl,
        array(
               'location' => $location,
               'keep_alive' => false,
               "stream_context" => stream_context_create([
                    'ssl' => [
                        'crypto_method' =>  STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
                    ]
                ]),
               'trace' => 1, // used for debug
            )
        );
    
    0 讨论(0)
  • 2020-12-01 08:23

    It seems the error SoapFault exception: Could not connect to host can be caused be several different things. In my cased it wasn't caused by proxy, firewall or DNS (I actually had a SOAP connection from the same machine working using nusoap without any special setup).

    Finally I found that it was caused by an invalid pem file which I referenced in the local_cert option in my SoapClient contructor.

    Solution: When I removed the certificate chain from the pem file, so it only contained certificate and private key, the SOAP calls started going through.

    0 讨论(0)
  • 2020-12-01 08:25

    In our case, it was a Ciphers negotiation problem. We were getting this error randomly. We solved our problem by forcing a Cipher like this:

    $soapClient = new SoapClient ('http://example.com/soap.asmx?wsdl',
        array (
            "stream_context" => stream_context_create (
                array (
                    'ssl' => array (
                        'ciphers'=>'AES256-SHA'
                    )
                )
            )
        )
    );
    

    Looks like PHP wasn't negotiating the same Ciphers at each service call.

    0 讨论(0)
提交回复
热议问题