欢迎访问WDPHP素材源码!今天是2024年03月19日 星期二,傍晚好!下班了!
您好,游客 [ 马上登录 | 注册帐号 | 微信登录 | QQ登录]
当前位置:首页 > 教程 > PHP教程 > 

php调用webservice的几种方法
栏目分类:PHP教程    发布日期:2018-07-15    浏览次数:4222次     收藏

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

    $soap = new SoapClient(null,array('location'=>'http://192.168.6.72:8036/Service1.asmx','uri'=>'http://phpabc.cn/'));  
    $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://phpabc.cn/HelloWorld'));  
    print_r($result2);

2.2使用SoapVar传递参数

    $ns = 'http://www.wdphp.com/';  
    $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;

相关热词: phpwebservice

源码 模板 特效 素材 资源 教程 站长