php 怎么 使用soap,webservice之PHP里如何正确使用soap

soap协议这个古老的通过wsdl文件通讯的协议,使用极其不方便,但是还有一些顽固的国企在使用,没办法,有一些需求必须跟他们对接接口,怎么办呢,在使用soap协议调用时候,php在这方面资料很少,很容易用错。

目前在PHP业界有两种使用方法:

一、使用soap扩展调用

二、引入lib/nusoap.php库,来操作

今天我重点来介绍的是第一种使用办法,第二种已经落后于时代了,不建议使用。

特别注意:

php里面还有nowsdl的调用方式,不建议使用,原因:使用nowsdl过程发现只有php业务能正常通讯,其他语言调用服务无法正常使用,不能跨语言。

我今天给大家介绍的是通过wsdl文件生成的soap服务,wsdl文件怎么生成可以使用zend工具。

具体来看代码:

command.php就是soap的服务端

client.php 是客户端

command.wsdl文件

command.php

ini_set("soap.wsdl_cache_enabled", "0");

Class WebService

{

private $returnSuccess = 'success';

private $returnFail = 'fail';

public function command($param = []){

return ['return' => $this->returnSuccess.json_encode($param)];

}

}

//这里可以用外部生成好的wsdl文件

$server = new SoapServer('command.wsdl', ['uri' => "command.php", 'encoding' => 'utf-8']);

//设置服务类名

$server->setClass("WebService");

$server->handle();

client.php

header('Content-Type: text/xml; charset=UTF-8');

$client = new SoapClient(

'http://127.0.0.1:8003/cmd-service/command.php?wsdl',

['encoding' => 'utf-8', 'cache_wsdl' => 0, 'compression' => true]

);

try {

$param =['enterpriseId' => 2,'randVal' => '111'];

//这里一定要加上parameters

$result = $client->__soapCall("command", ['parameters' => $param]);

} catch (Exception $e) {

echo $e->getMessage();exit;

}

echo $result->return;

command.wsdl文件

SoapDiscovery.class.php 下载这个类库去生成 或者 用zend生成

require_once('command.php');

define('WSDL_FILE','command.wsdl');

if(!file_exists(WSDL_FILE)){

require_once('SoapDiscovery.class.php');

$sd = new SoapDiscovery('WebService', 'command');

$str = $sd->getWSDL();

file_put_contents(WSDL_FILE, $str);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值