Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Website SOAP-ERROR: Parsing WSDL

My company asked me to migrate their website from Apache to another server which uses WAMP to keep the website in local mode (don't ask me why they want it, looking a mix with Cloud server). So far, I've been able to migrate it to Wamp server 2.2, reason, because there are some issues with mod_auth_sspi, I could fix that one too and the connexion to the LDAP is made.

Now my issue is, that when I apply the same code on the other server running under WAMP, there are issues with the

Exception Error!

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost:4799/QMS' : failed to load external entity "http://localhost:4799/QMS"

Reason:

Fatal error: Call to a member function __getLastRequest() on a non-object in E:\Wamp\www\reporting_tool\tools\qv_manager.php on line 38Call Stack#TimeMemoryFunctionLocation10.0004265744{main}( )..\index.php:020.0077635656include( 'E:\Wamp\www\reporting_tool\pages\admin\report.php' )..\index.php:9730.0079637104QlikviewManager->getUserDocumentWithID( )..\report.php:13540.0079637168QlikviewManager->getUserDocuments( )..\qv_manager.php:15850.0079637704QlikviewManager->getQlikviewServerInfo( )..\qv_manager.php:12860.0079638000QlikviewManager->getTimeLimitedKey( )..\qv_manager.php:9970.0079638296QlikviewManager->connect( )..\qv_manager.php:49

What actually is being done by the code implementation, is that it returns the Document from QlikView name, the folder where it is allocated and also the file name as .qvw all in the QMC. The same code, 1 on 1 runs perfectly with Apache, why doesn't it with WAMP.

I've been looking:

http://stackoverflow.com/questions/11082889/soap-error-parsing-wsdl-couldnt-load-from

http://stackoverflow.com/questions/4774182/configuring-wampserver-after-installation-to-enable-ssl

http://de1.php.net/curl

But that link didn't help me out.

I tried to check if the WSDL was an issue while doing:

    $wsdl = file_get_contents('http://myservername:4720/QDS/Service');

    echo $wsdl;

But no errors came, so I suppose it works. Source: https://groups.google.com/forum/#!topic/google-doubleclick-for-publishers-api/nely_4Vl_No

I also checked if the SOAP extension is loaded by the WAMP and it does. localhost -> Server Configuration -> Loaded Extensions

The code for the connexion to the QMS:

function connect()

        {

            if ($this->client)

                return 1;

                       

            try

            {

                $options = array(

                    'exceptions'=>true,

                    'trace'=>1

                );

                $this->client = new NTLMSoapClient($this->host, $options);

               

                return 1;

            }

            catch (Exception $e)

            {

                    echo "<h2>Exception Error!</h2>";

                    echo $e->getMessage() . '<br/>';

                    echo $this->client->__getLastRequest() . '<br/>';

                    echo $this->client->__getLastRequestHeaders() . '<br/>';

                    echo $this->client->__getLastResponse() . '<br/>';

                    echo $this->client->__getLastResponseHeaders() . '<br/>';

                    return 0;

            }

        }

The code in NTLMSoap:

class NTLMSoapClient extends SoapClient {

        public $serviceKey = null;

   

        function __doRequest($request, $location, $action, $version, $one_way = 0) {

            global $QLIKVIEW_ADMIN_USERNAME;

            global $QLIKVIEW_ADMIN_PASSWORD;

           

            $headers = array(

                'Method: POST',

                'Connection: Keep-Alive',

                'User-Agent: PHP-SOAP-CURL',

                'Content-Type: text/xml; charset=utf-8;',

                'SOAPAction: '.$action

            );

            if ($this->serviceKey)

                $headers[] = 'X-Service-Key: ' . $this->serviceKey;

               

            $this->__last_request_headers = $headers;

            $ch = curl_init($location);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

            curl_setopt($ch, CURLOPT_POST, true);

            curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);

            curl_setopt($ch, CURLOPT_USERPWD, $QLIKVIEW_ADMIN_USERNAME.':'.$QLIKVIEW_ADMIN_PASSWORD);

            $response = curl_exec($ch);

            return $response;

        }

        function __getLastRequestHeaders() {

            return implode("\n", $this->__last_request_headers)."\n";

        }

    }

I checked if my WAMP has php curl activated and it does.

Other configuration I did were:

$QLIKVIEW_HOST = 'myservername:8089';

$QLIKVIEW_HOST_IP = 'localhost:8089';

$QLIKVIEW_ADMIN_USERNAME = 'myuserid';

$QLIKVIEW_ADMIN_PASSWORD = 'mypassword';

$QLIKVIEW_MANAGEMENT = 'http://localhost:4799/QMS';

Am I missing some configuration maybe?  Or someone did try it with WAMP?

Thanks for suggestion.

1 Solution

Accepted Solutions
Not applicable
Author

Found the issue...

I found a problem with CURL version and WAMP

I had to download php_curl-5.4.3-VC9-x64.zip

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Hope this might help someone who's running WAMP with the QMS.

View solution in original post

1 Reply
Not applicable
Author

Found the issue...

I found a problem with CURL version and WAMP

I had to download php_curl-5.4.3-VC9-x64.zip

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Hope this might help someone who's running WAMP with the QMS.