php调用webservice的几种方法

1.WSDL模式: $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传递参数: $ns = http://www.genban.org/; $

1.WSDL模式:

 $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传递参数:

 

$ns = 'http://www.genban.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://phpabc.cn/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;



本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

今天在用php进行图片保存输出时候,图片一直显示错误,后面用调试模式下提示:Warning: Cannot modify header information - headers already sent by... 看了一些网上的方法也没解决,最后在php.ini配置output_buffering默认为4096就没有遇到这个错误了: o
ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有Header had all ready send by的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要
第一种方法:用php的strpos() 函数判断字符串中是否包含某字符串的方法 if(strpos(www.genban.org,genban) !== false){ echo 包含genban; }else{ echo 不包含genban; } 第二种 使用了explode 用explode进行判断PHP判断字符串的包含代码如下: ?php $name = 00
/u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象) /s 表示将字符串视为单行来匹配
随机生成难点是在于如何避免碰撞,有人说用md5,GUID这些机制啊,当然可以,但是做为账号,看着有乱,而且生成位数也过长。 本方法只需要解决1秒内的并发碰撞就可以,因为固定头部采用的是unixtime时间,精确到秒,超过1秒,这个头部的时间肯定变化了。同时
文实例讲述了PHP页面实现定时跳转的方法,分享给大家供大家参考。具体实现方法如下: php定时跳转我们需要利用header函数输入html或js代码来实现定时跳转,下面我来介绍一个简单的例子 php代码如下: header(refresh:3;url=https://www.genban.org);print(正