php soap实现WebService接口
nusoap是php写的一个功能文件,下载地址:http://pan.baidu.com/s/1i3mUQJr
一、不使用wsdl
服务端 server.php
<?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
<?php
//包函nusoap.php
require_once('./lib/nusoap.php');
//新建一个soap客户端,调用服务端提供的wsdl
$client = new soapclient('http://localhost/test/server.php');
//查看一下是不是报错
$err = $client->getError();
if ($err) {
//显示错误
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
} //调用服务端的方法
$result = $client->call('hello', array('person' => "this is a test")); echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
?>
二、使用wsld
服务端 serve.php
<?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
<?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 '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
//要向服务端要传的参数
$person = array('firstname' => 'Willi', 'age' => 22, 'gender' => 'male'); //调用服务端的方法
$result = $client->call('hello', array('person' => $person));
//错误审核
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
$err = $client->getError();
if ($err) {
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
//显示请求信息
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
//显示返回信息
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
//显示调试信息
echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
?>
php soap实现WebService接口的更多相关文章
- jmeter3 测试soap协议-webservice接口
1.新建一个线程组 2.在线程组下新增,SOAP请求 3.设置soap请求,然后就可以测试了
- 使用URL工具类调用webservice接口(soap)与http接口的实现方式
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- python通过http请求发送soap报文进行webservice接口调用
最近学习Python调用webservice 接口,开始的时候主要采用suds 的方式生产client调用,后来发现公司的短信接口采用的是soap报文来调用的,然后开始了谷歌,最后采用httplib ...
- 【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter对SOAP协议性能测试脚本开发
目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 JMeter对SOAP协议性能测试脚本开发 [阐 ...
- Java调用webservice接口方法(SOAP message、xfire、axis)
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...
- JMeter3.0及JMeter5.1开发WebService接口脚本(soap取样器 & http取样器)
由于5.1没有soap取样器了,所以用3.0演示. WebService接口信息 WebService接口地址:http://www.webxml.com.cn/WebServices/Weather ...
- lr使用soap协议,来对webservice接口进行测试
实际项目中基于WSDL来测试WebService的情况并不多,WSDL并不是WebService测试的最佳选择. 最主要的原因还是因为WSDL文档过于复杂. 在案例(天气预报WebService服务) ...
- python实现建立soap通信(调用及测试webservice接口)
实现代码如下: #调用及测试webservice接口 import requests class SoapConnect: def get_soap(self,url,data): r = reque ...
- 从xfire谈WebService接口化编程
前段时间有博友在看我的博文<WebService入门案例>后,发邮件问我关于WebService 接口在java中的开发,以及在实际生产环境中的应用.想想自己入职也有一段时间了,似乎也该总 ...
随机推荐
- 慕课网视频破解付费分享-前端开发-Python等
微信小程序 慕课网 BAT大牛经验总结全面深入解读Android面试 前端JS基础面试技巧 vue2.0+node.js+mongodb全栈打造商城 Vue.js高级实战-开发移动端音 ...
- 再起航,我的学习笔记之JavaScript设计模式21(命令模式)
命令模式 概念描述 命令模式(Command): 将请求与实现解耦并封装成独立的对象,从而使不同的请求对客户端的实现参数化 示例代码 命令模式我们可以看成是将创建模块的逻辑封装在一个对象里,这个对象提 ...
- Jquery的同步和异步请求
1 异步请求: 1.1 $.ajax $.ajax({ url : 'your url', data:{name:valu ...
- Java 多线程(二) 线程的实现
线程的实现 在Java中通过run方法为线程指明要完成的任务,有两种技术来为线程提供run方法: 1.继承Thread类并重写它的run方法.之后创建这个子类的对象并调用start()方法. 2.通过 ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.23 third day
团队作业8--第二次项目冲刺(Beta阶段)--5.23 third day Day three: 会议照片 项目进展 今天是beta冲刺的第三天,组长回到了队伍当中,正式开始改进alpha中存在的功 ...
- 201521123086 《Java程序设计》第8周学习总结
本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 书面作业 1.List中指定元素的删除 题集jmu-Java-05-集合之4-1 1.1 实验总结 Answer: ...
- 201521123113 《Java程序设计》第4周学习总结
1.本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 设计类的技巧:类名和方法名要能够体现他们的职责,类名首字母要大写 如何识别一个类 方法.属性的 ...
- 201521123031 《Java程序设计》第一周学习总结
1. 本周学习总结 a.使用notepad++和eclipse编写程序b.对jav的运行环境jdk.jre有了初步的认识c.学习如何使用码云代码库 2. 书面作业 Q1.为什么java程序可以跨平台运 ...
- 201521123045 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- 201521123049 《JAVA程序设计》 第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...