php web service ( 待续……)


$soap = new SoapClient(null,array('location'=>"http://api.aaa.com/app2/mobile?ws=1",'uri'=>''));
$h = new SoapHeader('http://api.aaa.com/app2/mobile?ws=1',    'WebServicesSoapHeader',    false, SOAP_ACTOR_NEXT);  
$soap->__setSoapHeaders(($headers));//添加soapheader
$result1 = $soap->getCode();
echo $soap->call('getCode');
//    $result2 = $soap->__soapCall("getVersion",array());
    echo $result1."<br/>";
//    echo $result2;

/**
*  $result1 = $soap->getVersion();  
*  echo $result1; 是可以的
*/

服务器端的代码

 //包含提供服务的类进来
  require_once('PersonInfo.php');
   
  //wsdl方式提供web service,如果生成了wsdl文件则可直接传递到//SoapServer的构造函数中
  //$s = new SoapServer('PersonInfo.wsdl');
   
  //doesn't work 只有location不能提供web service
  //output:looks like we got no XML document
  //$s = new SoapServer(null,array("location"=>"http://localhost/Test/MyService/Server.php"));
  
  //下面两种方式均可以工作,只要指定了相应的uri
  //$s = new SoapServer(null,array("uri"=>"Server.php"));
    $s = new SoapServer(null,array("location"=>"http://localhost/Test/MyService/Server.php","uri"=>"Server.php"));
  
    $s -> setClass("PersonInfo");
 
    $s -> handle();

客户端代码:

 try{
      //wsdl方式调用web service
      //wsdl方式中由于wsdl文件写定了,如果发生添加删除函数等操作改动,不会反应到wsdl,相对non-wsdl方式
      //来说不够灵活
      //$soap = new SoapClient("http://localhost/Test/MyService/PersonInfo.wsdl");
       
      //non-wsdl方式调用web service    
      //在non-wsdl方式中option location系必须提供的,而服务端的location是选择性的,可以不提供
     $soap = new SoapClient(null,array('location'=>"http://localhost/Test/MyService/Server.php",'uri'=>'Server.php'));
      
     //两种调用方式,直接调用方法,和用__soapCall简接调用
     $result1 = $soap->getName();
     $result2 = $soap->__soapCall("getName",array());
     echo $result1."<br/>";
     echo $result2;
      
 }catch(SoapFault $e){
     echo $e->getMessage();
 }





你可能感兴趣的:(php web service ( 待续……))