php soap 使用实例

PHP 解析 SOAP 载荷时出现 XML 错误,源代码修正与解释 通过上述步骤,您应该能够修正和解决 PHP 解析 SOAP 载荷时遇到的 XML 错误。在 PHP 中使用 SOAP(Simple Object Access Protocol)进行 Web 服务调用时,有时候会遇到 XML 错误,特别是在解析 SOAP 载荷时。如果在前面的步骤中发现了 XML 语法错误或缺失的 SOAP 命名空间,可以通过修正载荷来解决问题。确保 XML 载荷的结构和内容与 SOAP 服务所期望的一致。首先,需要确保 SOAP 载荷是有效的 XML 文档,并且符合 XML 的语法规则。 阅读详情

SOAP 是基于XML和HTTP通讯协议,XML各个平台,各种语言都支持的一种语言。

WSDL 是网络服务描述语言(Web Services Description Language),是一种使用XML格式的文档。这种文档可描述某个Web Service。可规定服务的位置,及服务提供的操作。

不同语言之间需要通信(例如:php,java,c),可以通过SOAP,WSDL使不同操作系统,不同技术的编程语言互相通信。


php soap 扩展安装

扩展位置在php安装包的 ext/soap 目录,安装步骤:

cd php-5.3.15/ext/soap
phpize
./configure
sudo make
sudo make test
安装成功后在phpinfo可以看到soap扩展



SOAP有两种操作方式,NO-WSDL 与 WSDL。

NO-WSDL模式:使用参数来传递要使用的信息

WSDL模式: 使用WSDL文件名作为参数,并从WSDL中提取服务所需的信息。(每次修改都需要修改client与server的wsdl文件,没有NO-WSDL模式灵活,以后再介绍这种模式的使用)


SOAP中主要用到三个类,SOAPServer,SOAPClient,SOAPFault


NO-WSDL模式:

soapHandle.class.php 处理请求

<?php

class soapHandle{

    public function strtolink($url=''){
        return sprintf('<a href="%s">%s</a>', $url, $url);
    }

}

?>
server.php soap服务端

<?php

// 服务器验证
if ($_SERVER['PHP_AUTH_USER']!='fdipzone' || $_SERVER['PHP_AUTH_PW']!='123456') {
      header('WWW-Authenticate: Basic realm="MyFramework Realm"');
      header('HTTP/1.0 401 Unauthorized');
      echo "You must enter a valid login ID and password to access this resource.\n";
      exit;
}

require("soapHandle.class.php"); // 处理请求的class

try{
    $server = new SOAPServer(null, array('uri'=>'http://demo.fdipzone.com/soap/server.php'));
    $server->setClass('soapHandle'); //设置处理的class
    $server->handle();
}catch(SOAPFault $f){
    echo $f->faultString; // 打印出错信息
}

?>
client.php soap客户端

<?php

try{
    $client = new SOAPClient(null, array(
                        'location' => 'http://demo.fdipzone.com/soap/server.php', // 设置server路径
                        'uri' => 'http://demo.fdipzone.com/soap/server.php',
                        'login' => 'fdipzone', // HTTP auth login
                        'password' => '123456' // HTTP auth password
                    ));

    echo $client->strtolink('http://blog.youkuaiyun.com/fdipzone').'<br>';               // 直接调用server方法
    echo $client->__soapCall('strtolink', array('http://blog.youkuaiyun.com/fdipzone')); // 间接调用server方法
}catch(SOAPFault $e){
    echo $e->getMessage();
}

?>

Header验证例子:

server.php

<?php

// 服务器验证  
if ($_SERVER['PHP_AUTH_USER']!='fdipzone' || $_SERVER['PHP_AUTH_PW']!='123456') {
    header('WWW-Authenticate: Basic realm="NMG Terry"');
    header('HTTP/1.0 401 Unauthorized');
    echo "You must enter a valid login ID and password to access this resource.\n";
    exit();
}

require 'SOAPHandle.class.php';

$config = array(
            'uri' => 'http://demo.fdipzone.com/soap/server.php'
);

$oHandle = new SOAPHandle;

// no wsdl mode
try{

    $server = new SOAPServer(null, $config);
    $server->setObject($oHandle);
    $server->handle();

}catch(SOAPFault $f){

    echo $f->faultString;

}

?>
client.php

<?php

$config = array(
            'location' => 'http://demo.fdipzone.com/soap/server.php',
            'uri' => 'http://demo.fdipzone.com/soap/server.php',
            'login' => 'fdipzone',
            'password' => '123456',
            'trace' => true
);

try{

    $auth = array('fdipzone', '654321');

    // no wsdl
    $client = new SOAPClient(null, $config);
    $header = new SOAPHeader('http://demo.fdipzone.com/soap/server.php', 'auth', $auth, false, SOAP_ACTOR_NEXT);
    $client->__setSoapHeaders(array($header));

    $revstring = $client->revstring('123456');
    $strtolink = $client->__soapCall('strtolink', array('http://blog.youkuaiyun.com/fdipzone', 'fdipzone blog', 1));
    $uppcase = $client->__soapCall('uppcase', array('Hello World'));

    echo $revstring.'<br>';
    echo $strtolink.'<br>';
    echo $uppcase.'<br>';

}catch(SOAPFault $e){
    echo $e->getMessage();
}

?>
SOAPHandle.class.php

<?php

class SOAPHandle{ // class start

    // header 驗證
    public function auth($auth){
        if($auth->string[0]!='fdipzone' || $auth->string[1]!='654321'){
            throw new SOAPFault('Server', 'No Permission');
        }
    }

	// 反轉字符串
    public function revstring($str=''){
        return strrev($str);
    }

    // 字符傳轉連接
    public function strtolink($str='', $name='', $openwin=0){
        $name = $name==''? $str : $name;
        $openwin_tag = $openwin==1? ' target="_blank" ' : '';
        return sprintf('<a href="%s" %s>%s</a>', $str, $openwin_tag, $name);
    }

    // 字符串轉大寫
    public function uppcase($str){
        return strtoupper($str);
    }


} // class end

?>

SOAPHeader 第四与第五个参数说明:

Must Understand

这个参数指明了, 是否服务端必须要响应SoapHeader, 如果这个参数为真, 而服务端并不能识别响应的Header,则会引发一个Soap Fault(Header not understood)。

SOAP_ACTOR_NEXT

actor指明了SoapHeader要传递给谁, 被哪个Service处理。

SOAP_ACTOR_NEXT的意思就是, 下一个接受到这个请求头的Service。

在SoapServer的构造函数中, 我们可以指明一个Server的Actor, 比如:

<?php
$config = array(
            'uri' => 'http://demo.fdipzone.com/soap/server.php',
            'actor' => 'myserver'
);
$server = new SOAPServer(null, $config);
?>
然后就可以在Client的SoapHeader中, 通过设置actor是myserver, 来让指定的Server来获得我们设置的头部的信息。

源码下载地址:点击查看



PHP SOAP错误:无法解析XML文档 当出现"looks like we got no XML document"错误时,首先需要检查接收到的XML文档是否符合SOAP协议的要求。这种情况下,可能是由于SOAP客户端无法正确解析响应XML文档而导致的错误。这种情况下,错误可能是由于SOAP客户端无法与SOAP服务端进行正常通信而导致的。请确保SOAP服务端的URL地址和端口号是正确的,并且网络连接是可用的。这种情况下,接收到的XML文档可能不符合SOAP协议的要求。确保接收到的XML文档遵循SOAP消息的正确格式。您可以使用PHP的内置函数。 阅读详情

相关推荐

PHP SOAP 模块编译错误:SOAP 模块入口错误

然而,有时候在编译 PHP 时,可能会遇到 SOAP 模块的编译错误,特别是与 SOAP 模块的入口相关的错误。这些是一些常见的导致 SOAP 模块入口错误的问题和解决方法。通过检查是否启用了 SOAP 扩展,使用正确的模块入口名称以及确保必要的依赖项已正确安装,您应该能够解决大多数与 SOAP 模块入口错误相关的问题。如果在编译 PHP 时没有包含 SOAP 扩展,那么在尝试使用 SOAP 相关函数时就会出现模块入口错误。,如果在配置文件或代码中错误地使用了其他名称,就会导致模块入口错误。

ByteSparkX的博客 208

php soap详解,关于PHP+SOAP详解

ØSOAP1.SimpleObjectAccessProtocol简单对象访问协议主要包括下面四部分:a)SOAP封装:用于将传输数据中的内容,发送端消息,接收端信息和处理方式等信息封装起来以准备数据传输.b)SOAP编码规则:用于表示传输数据中各项的数据类型等信息c)SOAP远程过程调用协定:用于进行远程过程调用及应答的协议d)SOAP绑定协议:用于表示信息交换的底层协议ØPHP5中SOAP应用...

weixin_26854555的博客 1628

WPS和Excel通用!省市区四级联动下拉菜单保姆级教程(附最新行政区划数据包)

本文详细介绍了在WPS和Excel中实现省市区四级联动下拉菜单的完整教程,包含2024年最新行政区划数据的获取与整理方法。通过名称管理器和INDIRECT函数的组合,以及WPS的特色功能,帮助用户高效准确地录入四级行政区划信息,提升数据录入效率并减少错误。

s1t2u3的博客 611

php soap mysql_php soap 使用实例

SOAP 是基于XML和HTTP通讯协议,XML各个平台,各种语言都支持的一种语言。WSDL 是网络服务描述语言(Web Services Description Language),是一种使用XML格式的文档。这种文档可描述某个Web Service。可规定服务的位置,及服务提供的操作。不同语言之间需要通信(例如:php,java,c),可以通过SOAP,WSDL使不同操作系统,不同技术的编程语...

weixin_32821263的博客 220

redhawk-sc(seascape)学习日志2

design view是主view,是所有seascape view中最root的部分,一个design view可以驱动多种类型分析比如静态IR drop,动态IR drop以及EM.这些分析可以在不同的PVT和翻转率下.Design view是一个必须的view对于redhawk中的任何类型分析来说。seascape view相当于一个容器,用于保存各种和设计相关的数据,类似于逻辑信息、物理信息等等,每个view都有其对应的输入件和依赖,这些view都是redhawk用于各种类型的分析所需。

qq_39493558的博客 3497

吃透Chisel语言.04.Chisel基础(一)——信号类型和常量

开始肯定是介绍Chisel的基础内容了,《Chisel基础》这一部分主要会介绍数字设计中的两个基本组件:组合电路和触发器。这俩基本组件都不复杂,但是组合在一起就可以得到规模很大、功能也很强大的数字电路了。 第一部分我们就简单地看看Chisel中的信号类型和常量,在上一篇文章中也有相关介绍,其中还包括和Verilog之间的对比。......

github-3rr0r的博客 3822

PHP使用SOAP做webservice

PHP SOAP扩展原文地址:http://wso2.org/library/1060译者:Jimmy,转载请注明出处http://jimmys.cn简介PHP的SOAP扩展可以用来提供和使用Web services。换句话说,PHP开发者可以利用这个PHP扩展来写他们自己的Web services,也可以写一些客户端来使用给定的Web services。PHP5中的这个SOA

guoguo1980的专栏 1万+

ROS探索篇(一)在Gazebo中实现移动机器人仿真与环境搭建

$x+y=z$

weixin_52029211的博客 4621

PHP SOAP 扩展详解

PHP SOAP 扩展SOAP 的全称为简单对象访问协议 (Simple Object Access Protocol)。它是一种基于 XML 的,可扩展的通信协议。SOAP 提供了一种标准,使得运行在不同平台上并使用不同的编程语言编写的应用程序可以互相进行通信。SOAP 的可扩展性和平台无关性使得它被广泛用作 Web 服务的通信协议。由于 Java 语言提供了对 SOAP 的良好支持,通常基于

lfq618的专栏 1万+

技能伤害继承英雄属性【War3地图编辑器】

风暴之锤跟随山丘之王的力量增长

ArYe 2304

下采样新突破!ADown模块让YOLOv11多尺度特征提取更精准

ADown 凭借可编程梯度信息与多分支特征聚合的创新设计,打破了传统下采样在特征保留上的固有局限。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单新增模块脚本并修改配置文件,你的目标检测模型就能在多尺度特征捕捉能力上实现跨越式提升——无论是学术研究中的小目标检测突破,还是工业场景下的复杂多尺度任务落地,ADown 都能成为你攻克下采样瓶颈的利器。现在就动手尝试,让你的检测模型在下一代下采样技术的创新中再上一个台阶吧。

know_F0727的博客 524

php+soap实例下载,Windows下的PHP SOAP 实例

第一、修改php.ini文件, 打开下面的三个扩展库, 然后重新启动php服务extension=php_curl.dll soap 会用到curl库extension=php_openssl.dllextension=php_soap.dll第二、编写 server.phpfunction greet($param){$retval = 'Hello '....

weixin_39525307的博客 333

基于方差分解分析气象/水文干旱驱动因素(含MATLAB全代码)

简介基于方差分解方法分析气象/水文干旱驱动因素

WW、forever的博客 801

PHP SOAP 扩展的使用

简介 PHP 的 SOAP 扩展可以用来提供和使用 Web Services。换句话说,PHP 开发者可以利用这个 PHP 扩展来写他们自己的 Web Services,也可以写一些客户端来使用给定的 Web Services。 PHP5 中的这个 SOAP 扩展目的是为了实现 PHP 对 Web Services 的支持。与其它实现 PHP 对 Web Services 的支持的方法不同,SOAP 扩展是用 C 写的,因此它比其它方法具有速度优势。注:SOAP 扩展是在 PHP5 才开始提供,所以在此

richardman的专栏 399

SAPFiori Elements Analytical List Page 概述

ALP(Analytical List Page)是SAP Fiori提供的一种复合页面类型,结合了分析(图表/KPI)与事务(表格/操作)功能,适用于需要分析后立即执行处理的业务场景(如采购价格监控、销售逾期处理等)。其核心价值在于让用户在同一页面完成从数据洞察到事务处理的闭环,减少应用切换带来的效率损耗。 页面结构包含页头KPI标签、交互式图表和明细表格,通过联动过滤、选择同步等机制实现数据钻取与即时操作。支持标准过滤和可视化过滤,并依赖OData注解(SelectionVariant/Presenta

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 270

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

php soap完整实例,php soap 实例

http://blog.youkuaiyun.com/mayongzhan - 马永占,myz,mayongzhan Server端+Client端+WSDL 声明:很简单!!!!!! 参考了如下: http://blog.youkuaiyun.com/phphot/archive/2007/07/15/1692109.aspx 先建Server,然后使用wsdl工具来生成wsdl,我用的是zend developmen...

weixin_36018773的博客 260

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

php soap能干什么_PHP SOAP实例讲解

一、什么是soap,什么是wsdl,为什么要用他们SOAP是基于XML和HTTP通信协议,xml各种平台,各种语言都支持的一个种语言。http呢它得到了所有的因特网浏览器及服务器的支持。WSDL 指网络服务描述语言 (Web Services Description Language),是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的...

weixin_34303763的博客 399

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

soap soapenv区别_[SOAP] 使用PHP的SOAP时SOAP-ENV错误?

你的位置:问答吧-> PHP-> 问题详情[SOAP] 使用PHP的SOAP时SOAP-ENV错误?刚开始使用PHP自带的SOAP函数。在运行时服务器端(soap_server.php)出现如下的提示:[Copy to clipboard] [ - ]CODE:SOAP-ENV:ClientBad Reques...

weixin_39821330的博客 984

php soap 中文,php中soap应用

SOAP :简单对象访问协议 (SOAP:Simple Object Access Protocol) 简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议SOAP:简单对象访问协议(SOAP:Simple Object Access Protocol)简单...

weixin_35656078的博客 381

php soap java_php soap实例讲解

一,什么是soap,什么是wsdl,为什么要用他们SOAP是基于XML和HTTP通信协议,xml各种平台,各种语言都支持的一个种语言。http呢它得到了所有的因特网浏览器及服务器的支持。WSDL 指网络服务描述语言 (Web Services Description Language),是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的...

weixin_35317737的博客 249

PHP处理SOAP协议

PHP处理SOAP协议 2008-06-26 19:41 简介 PHP的SOAP扩展可以用来提供和使用Web services。换句话说,PHP开发者可以利用这个PHP扩展来写他们自己的Web services,也可以写一些客户端来使用给定的Web services。 PHP5中的这个SOAP扩展目的是为了实现PHP对Web services的支持。与其它实

Sean's Technology Blog 1256

php实现soap,PHP的SOAP原理及实现详解

PHP的SOAP原理及实现1. 简介:SOAP : (全称Simple Object Access Protocol) 为交换数据的一种协议规范,该通信协议位于HTTP之上,以XML格式语言进行数据互换,使用场景:如果各项目之间使用不用的开发语言要进行数据互换,就需要一个互相都能通信的工具,WSDL,SOAP为此诞生WSDL: WSDL 指网络服务描述语言 (Web Services Descri...

weixin_39622178的博客 588

php soap是什么,PHP SOAP 教程 实例 基础篇

先安装soap,我用的是php7。sudo yum install install php70w-soap把soap加入php中cd/etc/php.d/sudo cp zip.ini soap.inisudo vim soap.ini把extension=soap.so写入soap.inisudo systemctl restart php-fpmphp-m|grep soap#安装好了为了公开...

weixin_42451611的博客 290

php 开启soap扩展,PHP SOAP扩展

简介PHP的SOAP扩展可以用来提供和使用Web services。换句话说,PHP开发者可以利用这个PHP扩展来写他们自己的Web services,也可以写一些客户端来使用给定的Web services。PHP5中的这个SOAP扩展目的是为了实现PHP对Web services的支持。与其它实现PHP对Web services的支持的方法不同,SOAP扩展是用C写的,因此它比其它方法具有速度优...

weixin_39622905的博客 540
上一篇: 使用C创建php扩展
下一篇: 使用PDO查询mysql避免SQL注入
傲雪星枫
博客等级 码龄15年 2307粉丝 306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值