`
xzs603
  • 浏览: 32729 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP SOAP终于测验成功[ZT]

阅读更多

PHP SOAP终于测验成功
PHP5已经支持soap了。可是不知怎么回事,网上的例子在我机器上总是通过不了。今天终于调通了,高兴!

PHP的SOAP很简单,首先建立一个函数文件soapfunc.php,这个文件包含了我们想通过SOAP协议暴露给Web services的函数:reverse,add2numbers和gettime,没有什么不同,就是普通的php函数,前两个就是网上到处都可以看到的,我自己又加了一个。这里,一定要注意规范php代码的格式,我的问题就是出在格式上了。

--------------------------------------------------------------------------------

<?php
function reverse($str){
        $retval = '';
        if(strlen($str) < 1) {
                return new SoapFault('Client','','Invalid string');
        }
        for ($i = 1; $i <= strlen($str); $i++) {
                $retval .= $str[(strlen($str) - $i)];
        }
        return $retval;
}
function add2numbers($num1, $num2) {
        if (trim($num1) != intval($num1)) {
                return new SoapFault('Client','','The first number is invalid');
        }
        if (trim($num2) != intval($num2)) {
                return new SoapFault('Client','','The second number is invalid');
        }
        return ($num1 + $num2);
}
function gettime(){
        $time=strftime("%Y-%m-%d %H:%M:%S");
        return $time;
}
?>

 
--------------------------------------------------------------------------------

然后,编写soapserver.php,这个文件首先创建一个SoapServer对象实例,然后将我们要暴露的函数注册,最后的handle()用来处理接受到的SOAP请求。网上好多代码里面都没有这一行。

--------------------------------------------------------------------------------

<?
include_once('soapfunc.php');
$soap = new SoapServer(null,array('uri'=>"http://test-uri/"));
$soap->addFunction('reverse');
$soap->addFunction('add2numbers');
$soap->addFunction('gettime');
$soap->addFunction(SOAP_FUNCTIONS_ALL);
$soap->handle();
?>

 
--------------------------------------------------------------------------------


最后,我们需要一个测试页面,来测一下我们的Web Service是否好用,soapclient.php

--------------------------------------------------------------------------------

<?
try {
        $client = new SoapClient(null, array('location' =>
      "http://localhost/phpsite/soap/soapserver.php",'uri' => "http://test-uri/"));
        $str = "This string will be reversed";
        $reversed = $client->reverse($str);
        echo "If you reverse '",$str,"', you get '",$reversed,"'";
        $n1=20;
        $n2=33;
        $sum = $client->add2numbers($n1,$n2);
        echo "If you try ",$n1,"+",$n2,", you will get ",$sum,"";
        echo "The system time is: ",$client->gettime();
} catch (SoapFault $fault){
        echo "Fault! code:",$fault->faultcode,", string: ",$fault->faultstring;
}
?>

 
--------------------------------------------------------------------------------

测试页面首先创建一个SoapClient的实例,指定了该服务的URL和URI,SoapClient的构造函数第一个参数本应是指定WSDL(描述Web服务的公共接口)描述文件的,本来我也没看过WSDL的写法,所以就不采用wsdl方式定义了。
创建完SoapClient以后,就可以像本地函数一样调用Web Services了。

原文地址:http://www.nkstars.org/archive/beat/000520.html

 

分享到:
评论
3 楼 小朱向前冲 2012-11-16  
1楼xxrs90是没有开启php.ini中的soap_model
2 楼 抢街饭 2010-04-30  
感谢楼主的分享  最近为这东西闹心 学习了
1 楼 xxrs90 2009-11-19  
告诉我那个http://test-uri/ 是什么意思呀, 我的出错:

Fatal error: Class 'SoapClient' not found in D:\AppServ\www\soap\soapclient.php on line 3

相关推荐

    PHP的soapDemo

    PHP内置了对SOAP的支持,通过`SoapClient`和`SoapServer`类来实现SOAP通信。`SoapClient`用于作为SOAP客户端,调用远程Web服务;`SoapServer`用于创建SOAP服务器,处理来自客户端的请求。 3. **创建SOAP服务器**:...

    php soap操作实例

    PHP SOAP 操作实例详解 SOAP(Simple Object Access Protocol),简单对象访问协议,是一种基于XML的协议,用于在不同网络环境下的应用程序之间交换数据。在PHP中,SOAP库提供了与SOAP服务器交互的能力,允许开发者...

    拼接soap,判断soap是否连接成功,返回接口的信息,解析soap报文,解析后的soap转成实体

    本教程将围绕标题和描述中的关键知识点展开,包括如何拼接SOAP请求,判断SOAP连接成功,获取接口信息,解析SOAP响应报文,并将解析后的数据转换为Java实体。 首先,我们需要理解SOAP的基本结构。一个基本的SOAP消息...

    SOAP服务测试工具

    **SOAP服务测试工具——SoapUI-5.2.1** SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化信息。它允许服务提供商和消费者通过HTTP进行通信,使得数据交换变得标准化和易于...

    php-soap(web,server)

    PHP-SOAP扩展详解:构建Web服务的利器 在当今的互联网环境中,Web服务作为一种通信协议,使得应用程序之间能够交换数据并实现功能整合。PHP-SOAP扩展是PHP语言中的一个重要组成部分,它允许开发者创建SOAP(Simple ...

    php soap实例

    【PHP SOAP】是一种在PHP中实现Web...理解如何正确配置`SoapClient`和`SoapHeader`是成功使用PHP SOAP的关键。更多关于SOAP的信息可以在官方文档中找到,例如W3C的SOAP 1.2规范:http://www.w3.org/TR/soap12-part1/。

    PHP SOAP DEMO

    【PHP SOAP DEMO】是一个基于PHP的SOAP服务示例,它展示了如何在PHP环境中实现SOAP(Simple Object Access Protocol)客户端和服务端的应用。SOAP是一种用于在Web上交换结构化和类型化信息的协议,通常用于远程过程...

    PHP SOAP解决Could not connect to host

    PHP webservice SOAP解决Could not connect to host

    php编写webservice soap服务端及客户端

    描述中的“示例”和“说明文件”表明这个压缩包可能包含一个完整的PHP SOAP服务端和客户端示例代码,以及解释如何运行和测试这些示例的文档。文件名“CreateSoap”可能是创建SOAP服务或客户端的示例脚本。 在实际...

    soap.so linux下php驱动包

    soap.so linux下php驱动包 ,有些人无法打包,官方也没有提供下载。可以通过本地编译。 SOAP扩展 进入安装原php的源码目录, cd ext cd soap phpize ./configure --with-php-config=/var/php/bin/php-config (一定要...

    PHP-soap接口服务器

    PHP的SOAP扩展提供了SOAP客户端和服务器的功能,使开发者能够轻松地在PHP应用中实现SOAP通信。使用`SoapServer`类,我们可以创建一个SOAP服务器,而`SoapClient`类则用于与SOAP服务进行交互。这些类提供了处理WSDL...

    PHP webservice教程,soap wsdl密码验证,webservice高级应用

    本教程将聚焦于PHP的Web服务实现,特别是SOAP(Simple Object Access Protocol)协议以及WSDL(Web Services Description Language)的密码验证功能,这些都是Web服务高级应用的重要组成部分。 首先,我们要理解...

    php soap client

    php soapclient 访问java service server

    Soap调用接口 测试程序

    对于soap调用的测试程序 只需要编辑soap串即可调用测试

    PHP SOAP实现Web Services 完整实例WSDL服务端+客户端

    PHP实现的Web Services 完整...PHP.INI,请开启php_soap。 服务端:直接解压到网站根目录下,访问地址:http://localhost/hbj/wsdl.php?wsdl 客户端:http://localhost/hbj/Client.php ,显示hello world.表示成功。

    soap1.1和soap1.2区别

    SOAP 1.1 和 SOAP 1.2 区别详解 SOAP(Simple Object Access Protocol)是一种基于 XML 的轻量级协议,用于在网络上进行数据交换。SOAP 1.1 和 SOAP 1.2 是两个不同的版本,它们之间存在一些关键的区别。 首先,从...

    一个支持SOAP11和12规范的PHP客户端

    标题中的“一个支持SOAP11和12规范的PHP客户端”指的是一个PHP开发的软件工具,它能够处理基于SOAP(Simple Object Access Protocol)1.1和1.2版本的Web服务请求。SOAP是一种用于交换结构化和类型化的信息的协议,常...

    Jmeter进行soap接口测试脚本示例

    本篇将详细探讨如何使用JMeter进行SOAP接口测试,并通过提供的两个示例脚本——"soap接口测试适用jmeter3.2.jmx"和"soap接口测试适用jmeter3及以下版本.jmx"来进一步阐述。 首先,让我们了解JMeter的基础知识。...

    thinkphp下使用soap

    //从soap目录导class.nusoap.php类文件 $client = new nusoap_client($url. "?WSDL", "wsdl"); $client-&gt;soap_defencoding = 'utf-8'; $client-&gt;decode_utf8 = false; $client-&gt;xml_encoding = 'utf-8'; ...

Global site tag (gtag.js) - Google Analytics