最新消息:网站改版咯

php SOAP实例与应用

php Yovae 1714浏览

要通过php使用SOAP首先要了解什么是SOAP。这里先介绍一下SOAP是什么协议:

SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。

在我们的 SOAP 教程中,你将了解到什么是 SOAP,以及它如何在应用程序之间交换信息。

1、什么是 SOAP?

  • SOAP 指简易对象访问协议
  • SOAP 是一种通信协议
  • SOAP 用于应用程序之间的通信
  • SOAP 是一种用于发送消息的格式
  • SOAP 被设计用来通过因特网进行通信
  • SOAP 独立于平台
  • SOAP 独立于语言
  • SOAP 基于 XML
  • SOAP 很简单并可扩展
  • SOAP 允许您绕过防火墙
  • SOAP 将被作为 W3C 标准来发展

2、为什么要用SOAP?

对于应用程序开发来说,使程序之间进行因特网通信是很重要的。

目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。

通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。

SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。

3、SOAP 构建模块

一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

  • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
  • 可选的 Header 元素,包含头部信息
  • 必需的 Body 元素,包含所有的调用和响应信息
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中。

4、SOAP语法规则

这里是一些重要的语法规则:

  • SOAP 消息必须用 XML 来编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令

4、SOAP 消息的基本结构

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
  ...
  ...
</soap:Header>

<soap:Body>
  ...
  ...
  <soap:Fault>
    ...
    ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

5、php怎么使用SOAP

PHP 中,在 php.ini 文件中开启了 php_soap.dll 扩展后,PHP就可以支持 SOAP 了。

6、php的SOAP示例

1)php soap服务端示例代码:

<?php
class PersonInfo {
	/**
	 * 根据参数返回名称
	 * @return string 
	 *
	 */
	public function getName($what) {
		return "My Name is $what";
	}
}
$s = new SoapServer ( null, array ("location" => "http://www.yovae.com/testServer.php", "uri" => "testServer.php" ) );
$s->setClass ( "PersonInfo" );
$s->handle ();
?>

2)php soap客户端代码:

<?php
try {
	$soap = new SoapClient ( null, array ('location' => "http://www.yovae.com/testServer.php", 'uri' => 'testServer.php' ) );
	
	//两种调用方式,直接调用方法,和用__soapCall简接调用
	$result1 = $soap->getName ("Soap");
	$result2 = $soap->__soapCall ( "getName", array ("Soap") );
	echo $result1 . "<br/>";
	echo $result2;

} catch ( SoapFault $e ) {
	echo $e->getMessage ();
} catch ( Exception $e ) {
	echo $e->getMessage ();
}
?>

相信通过本文开发者应该就可以对php如何使用soap有初步的了解了吧。

转载请注明:Yovae Studio » php SOAP实例与应用