1 Reply Latest reply: Jul 22, 2013 8:42 AM by Micael Leal RSS

    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.