[转]php soap 开发文档
2013-12-23 08:51
232 查看
一.必备知识
1.wsdl(web服务标记语言)
WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。
具体参考请访问下面网址 http://www.w3school.com.cn/wsdl/index.asp
2.soap
SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。
具体参考请访问下面网址 http://www.w3school.com.cn/soap/index.asp 3.php扩展
具体参考请访问下面网址 http://php.net/manual/en/book.soap.php
二. php soap开发模式
1. working in swdl mode(契约先行(Contract first)模式)
契约先行模式使用了一个用XML定义的服务接口的WSDL文件。WSDL文件定义了服务必须实现或客户端必须使用的接口。SoapServer和SoapClient的WSDL模式就基于这个概念。也就是用soap通讯的时候必须先有一个定义过的服务接口,才能进行通讯。
2. working in non-swdl mode(代码先行(Code first)模式)
在代码先行模式中,首先要先写出实现服务的代码。然后在大多数情况下,代码会产生一个契约,换种说法,一个WSDL。接着客户端在使用服务的时候就可以使用那个WSDL来获得服务的接口。尽管如此,PHP5的扩展并没有从代码输出一个WSDL的规定,考虑到这种情况,可以在non-WSDL模式下使用 SoapServer和SoapClient。也就是说在soap通讯的时候并不需要一个预先定义过的服务接口,代码会自动的产生。
三.参考例子:
下面介绍如何使用WSDL模式和non-WSDL模式来实现服务和客户端。相对而言,使用WSDL模式来实现服务和客户端会比较容易。
1. noWSDL模式实现
服务端 server.php
<?php
class test
{
/**
*
* @return string
*/
function show()
{
return 'hello world!';
}
}
#####################################################
$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->setClass('test');
$server->handle();
?>
客户端 client.php
<?
$soap=new SoapClient(null, array(
'location' =>'http://soapserver_url/server.php',
'uri' => "http://test-uri/"));
print_r($soap->__getFunctions());
echo $soap->show();
?>
2. WSDL模式实现
第一步:编写服务端类文件
class..php
<?php
class test
{
/**
*
* @return string
*/
function show()
{
return 'hello world!';
}
}
?>
第二步:将类文件生成 wsdl文件server.wsdl。
由于wsdl文件编写比较复杂,所以我们用第三方工具生成。我们以zend studio为例子演示:
Tools ==> WSDL Generator ==> Configration name : test; WSDL file name: server
==>NEXT ==> 点击 + ==> 选择上面的创建的class.php ==> 这时候会看到一个 classes?? : URL Location的映射,保留 test类前面的勾,并将其url 设置为 SOAP Server的url:http://soapserver_url/server.php ==>点击Finish,ZDE就会创建一个非常漂亮的WSDL了?? 工作基本上完成了.
第三步:服务端编写:
<?php
require ' class..php '; //引入类文件
$server = new SoapServer('server.wsdl');
$server->setClass('test');
$server->handle();
?>
第四步:客户端编写
$soap = new SoapClient('http:// soapserver_url/server.wsdl');
print_r($soap->__getFunctions());
echo $soap->show();
以上两个例子只是一个简单的soap服务编写,已经可以满足大部分需要。如果需要更加高级的功能请参考其他方面的资料。
三.出现的问题。
1.在方法中对属性的赋值在其他方法中不起作用。
比如在客户端调用服务端某个方法对某个属性赋值。
在其他方法里就不能用。但在 __construct 方法中对属性的赋值是可以个在其他方法中使用的。
2. 提示 Client] looks like we got no XML document错误。
服务器端文件在<?php ?> 标签前后都不要有任何数据包括空格,空行。
3. Warning: SoapClient::SoapClient(): I/O warning : failed to load external entity
原因如下:PHP程序作为 SOAP客户端 采用 WSDL 模式访问远端服务器的时候,PHP是通过调用 libcurl 实现的。至少在 PHP5.2.X 是这样的。如果采用 non-WSDL 模式,就不需要 libcurl。在solaris 没有缺省安装 libcurl,也许是我没有安装。除了 了ibcurl以外,至少还关联的库包括:
libidn,ibgcc,libiconv,libintl,openssl
最近参与的项目,希望大家互相讨论,共同进步。
世界工厂网 www.gongchang.com
教程录入:andy 责任编辑:andy
阅读(618) | 评论(0) | 转发(0) |
0
上一篇:求助:PHP的持久对象
下一篇:[转]使用 JavaScript 拦截和跟踪浏览器中的 HTTP 请求
相关热门文章
承接自动化测试培训、外包、实...
Solaris PowerTOP 1.0 发布
For STKMonitor
busybox的httpd使用CGI脚本(Bu...
项目小体会
LNMP 老是会出现502?
suse 运用一个shell获取本机和...
虚拟机 unix 配置ip
hp-un 主机新系统读不到磁盘阵...
mysql出现问题:Starting MySQ...
给主人留下些什么吧!~~
评论热议
1.wsdl(web服务标记语言)
WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。
具体参考请访问下面网址 http://www.w3school.com.cn/wsdl/index.asp
2.soap
SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。
具体参考请访问下面网址 http://www.w3school.com.cn/soap/index.asp 3.php扩展
具体参考请访问下面网址 http://php.net/manual/en/book.soap.php
二. php soap开发模式
1. working in swdl mode(契约先行(Contract first)模式)
契约先行模式使用了一个用XML定义的服务接口的WSDL文件。WSDL文件定义了服务必须实现或客户端必须使用的接口。SoapServer和SoapClient的WSDL模式就基于这个概念。也就是用soap通讯的时候必须先有一个定义过的服务接口,才能进行通讯。
2. working in non-swdl mode(代码先行(Code first)模式)
在代码先行模式中,首先要先写出实现服务的代码。然后在大多数情况下,代码会产生一个契约,换种说法,一个WSDL。接着客户端在使用服务的时候就可以使用那个WSDL来获得服务的接口。尽管如此,PHP5的扩展并没有从代码输出一个WSDL的规定,考虑到这种情况,可以在non-WSDL模式下使用 SoapServer和SoapClient。也就是说在soap通讯的时候并不需要一个预先定义过的服务接口,代码会自动的产生。
三.参考例子:
下面介绍如何使用WSDL模式和non-WSDL模式来实现服务和客户端。相对而言,使用WSDL模式来实现服务和客户端会比较容易。
1. noWSDL模式实现
服务端 server.php
<?php
class test
{
/**
*
* @return string
*/
function show()
{
return 'hello world!';
}
}
#####################################################
$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->setClass('test');
$server->handle();
?>
客户端 client.php
<?
$soap=new SoapClient(null, array(
'location' =>'http://soapserver_url/server.php',
'uri' => "http://test-uri/"));
print_r($soap->__getFunctions());
echo $soap->show();
?>
2. WSDL模式实现
第一步:编写服务端类文件
class..php
<?php
class test
{
/**
*
* @return string
*/
function show()
{
return 'hello world!';
}
}
?>
第二步:将类文件生成 wsdl文件server.wsdl。
由于wsdl文件编写比较复杂,所以我们用第三方工具生成。我们以zend studio为例子演示:
Tools ==> WSDL Generator ==> Configration name : test; WSDL file name: server
==>NEXT ==> 点击 + ==> 选择上面的创建的class.php ==> 这时候会看到一个 classes?? : URL Location的映射,保留 test类前面的勾,并将其url 设置为 SOAP Server的url:http://soapserver_url/server.php ==>点击Finish,ZDE就会创建一个非常漂亮的WSDL了?? 工作基本上完成了.
第三步:服务端编写:
<?php
require ' class..php '; //引入类文件
$server = new SoapServer('server.wsdl');
$server->setClass('test');
$server->handle();
?>
第四步:客户端编写
$soap = new SoapClient('http:// soapserver_url/server.wsdl');
print_r($soap->__getFunctions());
echo $soap->show();
以上两个例子只是一个简单的soap服务编写,已经可以满足大部分需要。如果需要更加高级的功能请参考其他方面的资料。
三.出现的问题。
1.在方法中对属性的赋值在其他方法中不起作用。
比如在客户端调用服务端某个方法对某个属性赋值。
在其他方法里就不能用。但在 __construct 方法中对属性的赋值是可以个在其他方法中使用的。
2. 提示 Client] looks like we got no XML document错误。
服务器端文件在<?php ?> 标签前后都不要有任何数据包括空格,空行。
3. Warning: SoapClient::SoapClient(): I/O warning : failed to load external entity
原因如下:PHP程序作为 SOAP客户端 采用 WSDL 模式访问远端服务器的时候,PHP是通过调用 libcurl 实现的。至少在 PHP5.2.X 是这样的。如果采用 non-WSDL 模式,就不需要 libcurl。在solaris 没有缺省安装 libcurl,也许是我没有安装。除了 了ibcurl以外,至少还关联的库包括:
libidn,ibgcc,libiconv,libintl,openssl
最近参与的项目,希望大家互相讨论,共同进步。
世界工厂网 www.gongchang.com
教程录入:andy 责任编辑:andy
阅读(618) | 评论(0) | 转发(0) |
0
上一篇:求助:PHP的持久对象
下一篇:[转]使用 JavaScript 拦截和跟踪浏览器中的 HTTP 请求
相关热门文章
承接自动化测试培训、外包、实...
Solaris PowerTOP 1.0 发布
For STKMonitor
busybox的httpd使用CGI脚本(Bu...
项目小体会
LNMP 老是会出现502?
suse 运用一个shell获取本机和...
虚拟机 unix 配置ip
hp-un 主机新系统读不到磁盘阵...
mysql出现问题:Starting MySQ...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- php soap 开发文档
- PHP编码规范(PHPCMS开发文档)
- PHP编码规范(PHPCMS开发文档,PHP学习者从此开始)
- Flex中利用AMFPHP开发包通过PHP调用轻松生成输出PDF文档
- 用SAXReader解析xml文档本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2009/1217/18796.php
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
- PHP开发SOAP注意点
- 微信公众平台开发实例文档 wx_sample.php 详细解释
- Web图片上传插件开发文档-PHP
- wss4j开发包使用中读取SOAP文档出现的异常
- 利用SOAP扩展开发WebService(PHP)
- TP框架开发的站点使用phpdoctor生成文档注意事项
- 利用SOAP扩展开发WebService(PHP)
- 关于PHP--支付宝接口开发文档
- phpredis中文开发文档
- 基于php开发的RESTful ApiDoc文档
- PHP - Manual手册 - 函数参考 - SOAP Functions - SOAP函数 - SOAP configuration options missing documentation文档中丢失SOAP配置选项
- 基于php开发的RESTful ApiDoc文档
- 微信公众号开发:PHP,对接微信公众账号的测试文档wx_sample.php的解析
- PHP开发SOAP注意点