Web service integration using PHP

From KnowledgeTree Document Management Made Simple

Jump to: navigation, search

Contents

requirements

In order to interface with KnowledgeTree using the SOAP interface via PHP, you need access to a SOAP library.

There are a number that you can use. This guide will demonstrate how to use PHP PEAR::SOAP.

sample

define('KT_PEAR_DIR', '/path_to_pear/pear');
define('KT_SOAP_URL', 'http://your_kt_domain/ktwebservice/webservice.php');
define('KT_WSDL', KT_SOAP_URL . '?wsdl');
define('KT_USERNAME','admin');
define('KT_PASSWORD','admin');

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . KT_PEAR_DIR);

require_once('SOAP/Client.php');

$wsdl = new SOAP_WSDL(KT_WSDL);
$soapclient = $wsdl->getProxy();
$soapclient->setOpt('timeout', 60);

$login_response = $soapclient->login(KT_USERNAME, KT_PASSWORD, '127.0.0.1');

if ($login_response->status_message != 0 )
{
    die('Cannot authenticate with knowledgetree: '  . $login_response->message);
}

$session =   $login_response->message;

optimisation

You can optimise the code above by downloading the WSDL and creating a local file. The WSDL should remain static unless new functionality is added.

using https

It may help to disable some of the strict validation that SSL provides. add the following before the

// kt.wsdl is a file locally accessible
$wsdl = new SOAP_WSDL('kt.wsdl');
$soapclient = $wsdl->getProxy();
$soapclient->_endpoint = KT_SOAP_URL;
$soapclient->setOpt('timeout', 60);
$soapclient->setOpt('curl', CURLOPT_SSL_VERIFYHOST, 0);
$soapclient->setOpt('curl', CURLOPT_SSL_VERIFYPEER, 0);

alternative calling convention

    • TODO: TEST THIS
define('KT_PEAR_DIR', '/path_to_pear/pear');
define('KT_SOAP_URL', 'http://your_kt_domain/ktwebservice/webservice.php');
define('KT_WSDL', KT_SOAP_URL . '?wsdl');
define('KT_USERNAME','admin');
define('KT_PASSWORD','admin');

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . KT_PEAR_DIR);

require_once('SOAP/Client.php');

$soapclient = new SOAP_Client(KT_SOAP_URL, false);
$soapclient->setOpt('timeout', 60);

$login_params = array('username'=>'admin', 'password'=>'admin', 'ip'=>'127.0.0.1');

$response = $soapclient->call('login', $login_params);

$login_response = $soapclient->login(KT_USERNAME, KT_PASSWORD, '127.0.0.1');

if (PEAR::isError($login_response)
{
    die('Cannot authenticate: '  . $login_response->message);
}

print_r($login_response)
Personal tools