php soap mysql_php soap实现WebService接口

nusoap是php写的一个功能文件,下载地址:http://pan.baidu.com/s/1i3mUQJr

一、不使用wsdl

服务端 server.php

//包函nusoap.php

require_once('./lib/nusoap.php');

//创建服务端

$server = new soap_server;

//定义客户端调用方法

$server->register('hello');

//调用方法以及参数

function hello($name) {

return 'Hello, ' . $name;

}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);

?>

客户端 client.php

//包函nusoap.php

require_once('./lib/nusoap.php');

//新建一个soap客户端,调用服务端提供的wsdl

$client = new soapclient('http://localhost/test/server.php');

//查看一下是不是报错

$err = $client->getError();

if ($err) {

//显示错误

echo '

Constructor error

' . $err . '
';

}

//调用服务端的方法

$result = $client->call('hello', array('person' => "this is a test"));

echo '

Result

';

print_r($result);

echo '

';

?>

二、使用wsld

服务端 serve.php

//包函nusoap.php

require_once('./lib/nusoap.php');

//新建一个soap服务

$server = new soap_server();

$server->soap_defencoding = 'UTF-8';

//$ser->decode_utf8 = false;

$server->xml_encoding = 'UTF-8';

//初始化支持wsdl

$server->configureWSDL('hellowsdl2', 'hellowsdl2');

//定义数据结构来接收数据

$server->wsdl->addComplexType(

'Person',

'complexType',

'struct',

'all',

'',

array(

'firstname' => array('name' => 'firstname', 'type' => 'xsd:string'),//后面的type定义数据的类型,这个是string

'age' => array('name' => 'age', 'type' => 'xsd:int'),//后面的type定义数据的类型,这个是int

'gender' => array('name' => 'gender', 'type' => 'xsd:string')//后面的type定义数据的类型,这个是string

)

);

$server->wsdl->addComplexType(

'SweepstakesGreeting',

'complexType',

'struct',

'all',

'',

array(

'greeting' => array('name' => 'greeting', 'type' => 'xsd:string'),

'winner' => array('name' => 'winner', 'type' => 'xsd:string')

)

);

//服务器定义的soap调用方法

$server->register('hello', // 方法名字hello,方法就在下面

array('person' => 'tns:Person'), // 客户端传来的变量

array('return' => 'tns:SweepstakesGreeting'), //返回参数

'urn:hellowsdl2', // soap名

'urn:hellowsdl2#hello', // soap的方法名

'rpc', // 使用的方式

'encoded', // 编码

'test' // 存档

);

//定义上面注册过的函数hello

function hello($person) {

$greeting = 'Hello, ' . $person['firstname'] .'. It is nice to meet a ' . $person['age'] . ' year old ' . $person['gender'] . '.';

$winner = 'Scott';

//要返回的数据

return array(

'greeting' => $greeting,

'winner' => $winner

);

}

// 请求时(试图)调用服务

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);

?>

服务端 client.php

//包函nusoap.php

require_once('./lib/nusoap.php');

//新建一个soap客户端,调用服务端提供的wsdl

//$client = new soapclient('http://localhost/test/hellowsdl2.php?wsdl', true);

$client = new soapclient('http://localhost/test/helloworld2.php');

//查看一下是不是报错

$err = $client->getError();

if ($err) {

//显示错误

echo '

Constructor error

' . $err . '
';

}

//要向服务端要传的参数

$person = array('firstname' => 'Willi', 'age' => 22, 'gender' => 'male');

//调用服务端的方法

$result = $client->call('hello', array('person' => $person));

//错误审核

if ($client->fault) {

echo '

Fault

';

print_r($result);

echo '

';

} else {

$err = $client->getError();

if ($err) {

echo '

Error

' . $err . '
';

} else {

echo '

Result

';

print_r($result);

echo '

';

}

}

//显示请求信息

echo '

Request

';

echo '

' . htmlspecialchars($client->request, ENT_QUOTES) . '
';

//显示返回信息

echo '

Response

';

echo '

' . htmlspecialchars($client->response, ENT_QUOTES) . '
';

//显示调试信息

echo '

Debug

';

echo '

' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '
';

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值