Hello All,
I have developed a WCF service with htttps enabled.I have tested in .NET environment by creating a .NET windows client and consumed the service.I want to consume the same service php.I am new to php.I have written the below code
<?php
class WsseAuthHeader extends SoapHeader
{
private $wss_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';
function __construct($user, $pass, $ns = null)
{
if ($ns)
{
$this->wss_ns = $ns;
}
$auth = new stdClass();
$auth->Username = new SoapVar($user, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$auth->Password = new SoapVar($pass, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$username_token = new stdClass();
$username_token->UsernameToken = new SoapVar($auth, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns);
$security_sv = new SoapVar(
new SoapVar($username_token, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns),
SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'Security', $this->wss_ns);
parent::__construct($this->wss_ns, 'Security', $security_sv, true);
}
}
$my_cert_file=".../wamp/mycert.pem";
$options = array('soap_version' => SOAP_1_2,
'exceptions' => TRUE,
'trace' => TRUE,
'wdsl_local_copy' => TRUE,
'style' => SOAP_DOCUMENT,
'use' => SOAP_AUTHENTICATION_DIGEST,
'encoding' => SOAP_ENCODED,
'cache_wsdl' => WSDL_CACHE_NONE,
'local_cert' => $my_cert_file);
$username = "TestUser";
$password = "second";
$wsse_header = new WsseAuthHeader($username, $password);
$client = new SoapClient('https://192.168.0.120/TravelPlanService.svc?wsdl',$options);
$client->__setSoapHeaders(array($wsse_header));
try
{
$phpresponse= $client->Authenticate();
// print $phpresponse->GetResult->Version;
echo (bool)$phpresponse->AuthenticateResult;
echo "</b><BR/><BR/>";
}
catch(Exception $e)
{
echo "<h2>Exception Error!</h2></b>";
echo $e->getMessage();
}
?>
I have created a self signed certificate through online. Please provide me the solution to consume the HTTPS service in PHP .