原文: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. $soap = new SoapClient(null,array('location'=>'http://192.168.6.72:8036/Service1.asmx','uri'=>'http://tempuri.org/'));
  2. $result2 = $soap->__soapCall("HelloWorld",
  3. array(new SoapParam("aaa", "myName"),new SoapParam("bbb", "youName")),
  4. //array(new SoapParam("aaa", "ns1:myName"),new SoapParam("bbb", "ns1:youName")),
  5. array('soapaction'=>'http://tempuri.org/HelloWorld'));
  6. print_r($result2);

2.2使用SoapVar传递参数

  1. $ns = 'http://tempuri.org/';
  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://tempuri.org/HelloWorld'));
  7. print_r($result2);

3.添加安全Header

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

php调用webservice的几种方法的更多相关文章

  1. C#调用webService的几种方法

    转自: WebClient 用法小结 http://www.cnblogs.com/hfliyi/archive/2012/08/21/2649892.html http://www.cnblogs. ...

  2. 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)

    转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...

  3. Jquery调用webService的四种方法

    1.编写4种WebService方法 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(Conf ...

  4. Jquery调用webService的四种方法 转载-记录

    我总结几个关键点 1. 服务必须声明为ScriptService(否则会出现下面的问题) 2.服务的方法不需要任何更改,保持原状 3.客户端用jquery的.ajax方法来调用 3.1 type必须是 ...

  5. asp.net远程调用WebService的两种方法(转载)

    一,静态方法在“解决方案‘项目名’” -> 相应的文件夹,如“Web References” ->右键“添加WEB引用”->在URL里写入地址.二,动态方法在“解决方案‘项目名’” ...

  6. java调用webservice接口 几种方法

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  7. [转]Delphi调用cmd的两种方法

    delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...

  8. C++调用DLL有两种方法——静态调用和动态调用

    C++调用DLL有两种方法——静态调用和动态调用 标签: dllc++winapinullc 2011-09-09 09:49 11609人阅读 评论(0) 收藏 举报  分类: cpp(30)  [ ...

  9. C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用

    1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图 ...

随机推荐

  1. 10招让你成为杰出的Java程序员(转)

    如果你是一个热衷于技术的 Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出. 1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Ob ...

  2. Effective C++ -- 构造析构赋值运算

    05.了解C++默默编写并调用哪些函数 编译产生的析构函数时non-virtual,除非这个类的基类析构函数为virtual 成员变量中有引用和const成员时,无法自己主动生成copy assign ...

  3. 【Java 它 JVM】对象的创建过程

    虚拟机会new 指令: 1.检查指令的参数可在对类的符号引用的恒定饮食定位,并检查是否已装上代表这个类的符号引用.分析和初始化.假设没有.您必须运行相应的类加载过程. 2.类加载通过审查,虚拟机将分配 ...

  4. Photon + Unity3D 在线游戏开发 学习笔记(两)

    本文和大家 和大家说说 Photon 解压后的目录结构 这里面最基本的我们 以后开发要用到的目录 就是  deploy目录,这个目录里 放的是要挂载的 server 当然我们的 server端也要放在 ...

  5. SlidingMenu开源项目滑动界面的实现总结

    先上图 须要准备的是先得在GitHub上下载ActionBarSherlock-master.zip,和SlidingMenu-master.zip这两个开源文件,然后解压这两个包,SlidingMe ...

  6. ajax基本概念,方法

    ajax    Asynchronous javascript and xml异步的 javascript and XMLajax 是一门在不刷新网页的情况下,与服务器进行交互更新部分网页的技术: 传 ...

  7. Android HAL

  8. Mina框架断包、粘包问题解决方式

    Mina框架断包.粘包问题解决方式 Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(当然.也能够提供JAVA 对象的序 ...

  9. Unity3D中的Update, FixedUpdate, LateUpdate的区别

    MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehavi ...

  10. WPF换肤之八:创建3D浏览效果

    原文:WPF换肤之八:创建3D浏览效果 上节中,我们展示了WPF中的异步以及界面线程交互的方式,使得应用程序的显示更加的流畅.这节我们主要讲解如何设计一个具有3D浏览效果的天气信息浏览器. 效果显示 ...