Friday, October 19, 2012

create wsdl for sending email using soap and php

create simple wsdk webservice using php
--------------------------create wsdl using my code simple php --------------------------------------------
//step 1 create index.php
<?php
// Author by bikash ranajn nayak
require_once('../lib/nusoap.php');

$server = new nusoap_server;

$server->configureWSDL('server', 'urn:server');

$server->wsdl->schemaTargetNamespace = 'urn:server';
 $server->wsdl->addComplexType('Emailsend','complexType','struct','all','',
array(
'To' => array('name' => 'ToEmailid','type' => 'xsd:int'),
'From' => array('name' => 'FromEmailid','type' => 'xsd:string'),
'Subject' => array('name' => 'Subject','type' => 'xsd:string'),
'Message' => array('name' => 'MessageBody','type' => 'xsd:string')


));

$server->register('Emailsend',
            array('servicebybikash' => 'xsd:string'),   
            array('return' => 'xsd:string'),
            'urn:server',
            'urn:server#functions');

function Emailsend($to,$from,$subject,$messagebody)

$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";
if(mail($to,$subject,$messagebody,$headers)){
  return true;
}else{
return false;
}
  
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);
?>


-----------call wsdl index.php service using  php soap------------------------------------

 create a page call the wsdl service using php

<?php
/*
 *   auther by bikash
 *
 *    Client sample.
 *
 *    Service: SOAP endpoint
 *    Payload: rpc/encoded
 *    Transport: http
 *    Authentication: none
 */
require_once('../lib/nusoap.php');
$client = new soapclient('http://bikashnayak.com/samples/index.php?wsdl');
$htmldbody="<h1>helow bikash kese ho</h1>";
$res=$client->__call('Emailsend',array('to'=>'bikash@techwave.com','from'=>
'shamim@techwave.com','helo i shamaim',$htmldbody));
if($client->fault)
   {
      echo "Fault: <p>Code: {$client->faultcode}<br>";
      echo "String: {$client->faultstring}";
   }
   else
   {
   echo '<pre>' . htmlspecialchars($client->return, ENT_QUOTES) . '</pre>';
    echo "success fully sent mail";
   }

?>

json return using soap server and soap client using php


How to get JSON response from SOAP Call in PHP
copy soap_server page like (index.php);
-----------------------------------------------------------------------
require_once('../lib/nusoap.php');

$server = new nusoap_server;

$server->configureWSDL('server', 'urn:server');

$server->wsdl->schemaTargetNamespace = 'urn:server';

$server->register('getrequest',
            array('name' => 'xsd:string'),       
            array('return' => 'xsd:string'),
            'urn:server',
            'urn:server#getrequest');

function getrequest($value,$address)
{
   $getval=array('name'=>$value,'address'=>$address);
  
   return json_encode($getval);
    
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);
?>
------------------------------------------------------------------------------------
create soap client page (get json data form soap)getdata.php
----------------------------------------------------------------------------
require_once('../lib/nusoap.php');
$client = new soapclient('http://127.0.0.1/test/nusoap/samples/index.php?wsdl');

$res=$client->__call('getrequest',array('name'=>'bikash','address'=>'teliakan'));
if($client->fault)
   {
      echo "Fault: <p>Code: {$client->faultcode}<br>";
      echo "String: {$client->faultstring}";
   }
   else
   {
    echo $res;
   }