Unable to connect to WSDL

In my case "stream_context" did the magic, i've just added the code :

`"stream_context" => stream_context_create(
   array(
      'ssl' => array(
           'verify_peer'       => false,
           'verify_peer_name'  => false,
      )
   )
)`

Okey, I was able to found issue.

You can avoid this mess using stable PHP 5.5 version

Recently I learned that error: "looks like we got no XML document" is caused because of PHP version - PHP 5.6 in 5.5 working like a charm.

How to fix it in PHP 5.6

1) Remove SSL certificate check in PHP 5.6:

In 5.6 version SSL certification was enabled by default, so if you want to disabled it you must pass context stream:

    "stream_context" => stream_context_create(
        array(
            'ssl' => array(
                'verify_peer'       => false,
                'verify_peer_name'  => false,
            )
        )
    )

2) Deleted ?wsdl and added .wsdl instead (with ?wsdl, it didn't worke for me)

<?php

$client = new SoapClient("https://IP:443/sdk/vimService.wsdl",
    array(
        "trace" => 1,
        "location" => "https://IP:443/sdk/",
        'exceptions' => 1,
        "stream_context" => stream_context_create(
            array(
                'ssl' => array(
                    'verify_peer'       => false,
                    'verify_peer_name'  => false,
                )
            )
        )
    ) 
);


$soapmsg["_this"] = array( "_" => "ServiceInstance", "type" => "ServiceInstance");

$result = $client->RetrieveServiceContent($soapmsg);
$ServiceContent = $result->returnval;

$soapmsg = NULL;
$soapmsg["_this"] = $ServiceContent->sessionManager;
$soapmsg["userName"] = "USERNAME";
$soapmsg["password"] = "PASSWORD";

$result = $client->Login($soapmsg);
$UserSession = $result->returnval;

echo "User, " . $UserSession->userName . ", successfully logged in!\n";

$soapmsg = NULL;
$soapmsg["_this"] = $ServiceContent->sessionManager;
$result = $client->Logout($soapmsg);

In my case stream_context_create didn't worked.
So I download this file here : https://curl.haxx.se/ca/cacert.pem

and placed it in my localhost as : F:\xampp\apache\cert.pem and gave the same path for openssl.cafile=F:\xampp\apache\cert.pem in my phpini

This made the localhost to acquire certificate and things worked great...!! Posting this in case this may help some one going through my situation.


In my case was needed to add the crypt_method

"stream_context" => stream_context_create(
        array(
            'ssl' => array(
                'verify_peer'       => true,
                'verify_peer_name'  => true,
                'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
            )
        )
    )