php调用webservice的几种方法

1.WSDL模式:

  1. $soap?=?new?SoapClient("http://192.168.6.69:8899/Service1.asmx?wsdl");
  2. ???$result2?=?$soap->HelloWorld(array(
  3. ???????'myName'=>'aaa',
  4. ???????'youName'=>'bbb'
  5. ???));
  6. ???print_r($result2);

2.non-WSDL模式:

2.1使用SoapParam传递参数:

  1. $ns?=?'http://www.g27-llc.com/';??
  2. ????$soap?=?new?SoapClient(null,array('location'=>'http://192.168.6.72:8036/Service1.asmx','uri'=>$ns));??
  3. ????$result2?=?$soap->__soapCall("HelloWorld",
  4. ????array(new?SoapVar("AAA",?XSD_STRING,?null,?$ns,?"myName",?$ns),
  5. ????new?SoapVar("GBBB",?XSD_STRING,?null,?$ns,?"youName",?$ns)),
  6. ????array('soapaction'=>'http://phpabc.cn/HelloWorld'));??
  7. ????print_r($result2);

3.添加安全Header:

  1. $soap?=?new?SoapClient(null,array('location'=>'http://192.168.6.47/onvif/device_service'
  2. ,'uri'=>'http://www.onvif.org/ver10/device/wsdl/'));??
  3. ????//ws??
  4. ????$ns_wsse?=?"http://docs.oasis-open.org/wss/2004/01/
  5. oasis-200401-wss-wssecurity-secext-1.0.xsd";//WS-Security?namespace??
  6. ????$ns_wsu?=?"http://docs.oasis-open.org/wss/2004/01/
  7. oasis-200401-wss-wssecurity-utility-1.0.xsd";//WS-Security?namespace??
  8. ????$userT?=?new?SoapVar('admin',?XSD_STRING,?NULL,?$ns_wsse,?NULL,?$ns_wsse);
  9. ????$passwT?=?new?SoapVar('NnYZe7oD81Kd8QRS4tUMze/2CUs=',?XSD_STRING,?NULL,?$ns_wsse,?NULL,?$ns_wsse);
  10. ????$createdT?=?new?SoapVar(time(),?XSD_DATETIME,?NULL,?$ns_wsu,?NULL,?$ns_wsu);
  11. ????class?UsernameT1?{
  12. ????private?$Username;
  13. ????//Name?must?be??identical?to?corresponding?XML?tag?in?SOAP?header??
  14. ????private?$Password;
  15. ????//?Name?must?be??identical?to?corresponding?XML?tag?in?SOAP?header???
  16. ????private?$Created;
  17. ??????function?__construct($username,?$password,?$created)?{
  18. ?????????????$this->Username=$username;
  19. ?????????????$this->Password=$password;
  20. ?????????????$this->Created=$created;
  21. ????????}
  22. ????}
  23. ????$tmp?=?new?UsernameT1($userT,?$passwT,?$createdT);
  24. ????$uuT?=?new?SoapVar($tmp,?SOAP_ENC_OBJECT,?NULL,
  25. ????$ns_wsse,?'UsernameToken',?$ns_wsse);
  26. ????class?UserNameT2?{
  27. ????private?$UsernameToken;
  28. ????//Name?must?be??identical?to?corresponding?XML?tag?in?SOAP?header??
  29. ????function?__construct?($innerVal){
  30. ????????$this->UsernameToken?=?$innerVal;
  31. ????}
  32. ????}
  33. ????$tmp?=?new?UsernameT2($uuT);
  34. ????$userToken?=?new?SoapVar($tmp,?SOAP_ENC_OBJECT,?NULL,?$ns_wsse,?'UsernameToken',?$ns_wsse);
  35. ????$secHeaderValue=new?SoapVar($userToken,?SOAP_ENC_OBJECT,?NULL,
  36. ????????????????????????????????????????????$ns_wsse,?'Security',?$ns_wsse);
  37. ????$secHeader?=?new?SoapHeader($ns_wsse,?'Security',?$secHeaderValue);
  38. ????$result2?=?$soap->__soapCall("GetDeviceInformation",array(),null,$secHeader);
  39. ????echo?$result2;
大碗哥

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: