php调用webservice的几种方法

原文:php调用webservice的几种方法

1.WSDL模式:

extension = php_soap.dll

extension = php_curl.dll

extension = php_openssl.dll

<?php

header("content-type:text/html;charset=utf-8");

$client = new SoapClient("http://url/ooxx.asmx?wsdl");

$param = array('参数'=>'值','参数'=>'值');

$p = $client->__soapCall('调用方法名',array('parameters' => $param));

print_r($p->调用方法名Result);

?>

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

 2.non-WSDL模式:

2.1使用SoapParam传递参数:
$soap = new SoapClient(null,array('location'=>'http://192.168.6.72:8036/Service1.asmx','uri'=>'http://tempuri.org/'));
$result2 = $soap->__soapCall("HelloWorld",
array(new SoapParam("aaa", "myName"),new SoapParam("bbb", "youName")),
//array(new SoapParam("aaa", "ns1:myName"),new SoapParam("bbb", "ns1:youName")),
array('soapaction'=>'http://tempuri.org/HelloWorld'));
print_r($result2);	

2.2使用SoapVar传递参数
$ns = 'http://tempuri.org/';
$soap = new SoapClient(null,array('location'=>'http://192.168.6.72:8036/Service1.asmx','uri'=>$ns));
$result2 = $soap->__soapCall("HelloWorld",
array(new SoapVar("AAA", XSD_STRING, null, $ns, "myName", $ns),
new SoapVar("GBBB", XSD_STRING, null, $ns, "youName", $ns)),
array('soapaction'=>'http://tempuri.org/HelloWorld'));
print_r($result2);

3.添加安全Header
$soap = new SoapClient(null,array('location'=>'http://192.168.6.47/onvif/device_service','uri'=>'http://www.onvif.org/ver10/device/wsdl/'));
//ws
$ns_wsse = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";//WS-Security namespace
$ns_wsu = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";//WS-Security namespace

$userT = new SoapVar('admin', XSD_STRING, NULL, $ns_wsse, NULL, $ns_wsse);
$passwT = new SoapVar('NnYZe7oD81Kd8QRS4tUMze/2CUs=', XSD_STRING, NULL, $ns_wsse, NULL, $ns_wsse);
$createdT = new SoapVar(time(), XSD_DATETIME, NULL, $ns_wsu, NULL, $ns_wsu);
class UsernameT1 {
private $Username;
//Name must be  identical to corresponding XML tag in SOAP header
private $Password;
// Name must be  identical to corresponding XML tag in SOAP header
private $Created;
  function __construct($username, $password, $created) {
	     $this->Username=$username;
	     $this->Password=$password;
	     $this->Created=$created;
    }
}
$tmp = new UsernameT1($userT, $passwT, $createdT);
$uuT = new SoapVar($tmp, SOAP_ENC_OBJECT, NULL,
$ns_wsse, 'UsernameToken', $ns_wsse);

class UserNameT2 {
private $UsernameToken;
//Name must be  identical to corresponding XML tag in SOAP header
function __construct ($innerVal){
	$this->UsernameToken = $innerVal;
}
}
$tmp = new UsernameT2($uuT);
$userToken = new SoapVar($tmp, SOAP_ENC_OBJECT, NULL, $ns_wsse, 'UsernameToken', $ns_wsse);

$secHeaderValue=new SoapVar($userToken, SOAP_ENC_OBJECT, NULL,
                                        $ns_wsse, 'Security', $ns_wsse);
$secHeader = new SoapHeader($ns_wsse, 'Security', $secHeaderValue);
$result2 = $soap->__soapCall("GetDeviceInformation",array(),null,$secHeader);
echo $result2;

 

时间: 2024-10-27 05:02:40

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

VC调用javascript的几种方法(推荐)_javascript技巧

第一种:通过execScript调用.这种方法,虽然操作方便,但不能获取返回值. m_spHtmlDoc->get_parentWindow(&m_pHtmlWindow); VARIANT ret; ret.vt = VT_EMPTY; BSTR bstr = sScript.AllocSysString(); bRet = m_pHtmlWindow->execScript(bstr, L"javascript", &ret); ::SysFreeStr

在ASP中调用存储过程的几种方法

存储过程 1 这也是最简单的方法,两个输入参数,无返回值:set connection = server.createobject("adodb.connection")connection.open someDSN Connection.Execute "procname varvalue1, varvalue2" '将所有对象清为nothing,释放资源connection.closeset connection = nothing 2 如果要返回 Record

VC调用javascript的几种方法

第一种:通过execScript调用.这种方法,虽然操作方便,但不能获取返回值.m_spHtmlDoc->get_parentWindow(&m_pHtmlWindow);VARIANT ret;ret.vt = VT_EMPTY;BSTR bstr = sScript.AllocSysString();bRet = m_pHtmlWindow->execScript(bstr, L"javascript", &ret);::SysFreeString(bs

a 标签中调用js的几种方法

 我们常用的在a标签中有点击事件: 1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href里面执行javascript语句 2. a href="javascript:void(0);&quo

在ASP中调用存储过程的几种方法_存储过程

1 这也是最简单的方法,两个输入参数,无返回值: set connection = server.createobject("adodb.connection") connection.open someDSN  Connection.Execute "procname varvalue1, varvalue2"  '将所有对象清为nothing,释放资源 connection.close set connection = nothing 2 如果要返回 Recor

帝国CMS列表页调用文章tag两种方法

列表页调用tag的方法有两种,一种是切割副表的infotags字段,第二种种是从phome_enewstagsdata表中提取.如果采用tagid或tag静态化,则推荐使用第二种方法,效率更高.如果采用tagname的动态链接方式,可以采用第一种方法. 第一种方法:切割infotags字段 /* 列表页显示tag 开始*/ $tagstr=''; $infotags_r=explode(',',$r['infotags']); $tagscount=count($infotags_r); for

用脚本调用样式的几种方法_javascript技巧

之前经常遇见classname.csstext之类的词,却不知道如何用.最近着手网站实际建设,收获颇多,给还不懂的人分享一下. 通常在网页中样式表的调用方法有四种.第一是外链,即<link rel="StyleSheet" href = "/control/css/base.css">的形式:第二是输入样式表:第三是在网页头部申明,如<head> <style type="text/css">...:最后是直接

在Python中调用ggplot的三种方法_python

本文提供了三种不同的方式在Python(IPython Notebook)中调用ggplot. 在大数据时代,数据可视化是一个非常热门的话题.各个BI的厂商无不在数据可视化领域里投入大量的精力.Tableau凭借其强大的数据可视化的功能成为硅谷炙手可热的上市公司.Tableau的数据可视化的产品,其理论基础其实是<The Grammar of Graphic>,该书提出了对信息可视化的图表的语法抽象体系,数据的探索和分析可以由图像的语法来驱动,而非有固定的图表类型来驱动,使得数据的探索过程变得

JavaScript调用后台的三种方法实例_javascript技巧

方法一:直接使用<%=%>调用 前台JS: 复制代码 代码如下: <script type="text/javascript">         var methodStr = "<%=BehindMethod() %>";         alert(methodStr);         </script>  后头方法: 复制代码 代码如下: public static string BehindMethod()