千家信息网

SOAP如何构建实际的报文格式

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关SOAP如何构建实际的报文格式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。因为需要做一个SOAP的接口对接,对方环境没有弄好不能抓包,
千家信息网最后更新 2026年11月02日SOAP如何构建实际的报文格式

这篇文章将为大家详细讲解有关SOAP如何构建实际的报文格式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

因为需要做一个SOAP的接口对接,对方环境没有弄好不能抓包,也只会调用不懂格式构成,我们只想做个轻量级的接口,不需要支持SOAP的具体格式,只需要针对接口指定的具体参数名,解析字符串就可以了。

所以需要通过抓包确定一下soap的报文格式,方便做字符串解析和报文拼装。

因此准备构建一个php的soap环境,进行抓包。

当前环境

centos6.3系统,默认php不支持soap,下载了php5.6版本

编译

./configure '--with-libxml-dir=/usr/lib' '--with-zlib' '--with-gd' '--with-zlib-dir=/usr/local' '--with-mysql' '--enable-sockets' '--enable-mbstring' '--enable-soap' '--enable-safe-mode' '--enable-ftp' '--with-png-dir=/usr/local' '--with-freetype-dir=/usr/local' '--with-jpeg-dir=/usr/local' '--with-sqlite=shared'

发现找不到对应的iconv库,估计是在默认路径里面找不到。

所以重新编译了iconv库,设置./configure --prefix=/usr/local/libiconv

再编译php加上一句话'--with-iconv=/usr/local/libiconv'

./configure '--with-libxml-dir=/usr/lib' '--with-zlib' '--with-gd' '--with-zlib-dir=/usr/local' '--with-mysql' '--enable-sockets' '--enable-mbstring' '--enable-soap' '--enable-safe-mode' '--enable-ftp' '--with-png-dir=/usr/local' '--with-freetype-dir=/usr/local' '--with-jpeg-dir=/usr/local' '--with-sqlite=shared' '--with-iconv=/usr/local/libiconv'

make

make install

php -m|grep soap

显示安装成功

很悲剧的发现apache的phpinfo里面使用php还是5.3.3版本,替换/usr/bin/php为新版本,重启apache,但是无效,使用的还是旧版本的php。找了半天没有找到解决办法。

按照另外一种方法,将soap.so设置进php.ini里面,但是发现php根本没有编译出这个库,只有一个opcache.so。按照网上的方法,准备编译php安装目录下的ext/soap制作so,发现连configure都没有,估计是旧版本的功能。本来想找一下5.3.3版本,但是官位已经没有这么旧的版本了。

网上检查了一下php各版本的新增功能,发现当前php支持内置一个http服务器。

php -S localhost:3300 -t /path/to/root

可以启动一个端口为3300的http服务了,总算不用去折腾该死的apache了。

按照网上的流程,构建一个server和client。

首先放上Server.wsdl

红色的返回结果,2个参数,一个是result一个是错误原因,类型是wsdl:types,特别折腾,为了这个返回值弄了半天,对方是用java的,也说不明白。

青色是输入参数,5个独立参数,很简单。

紫色是请求地址,客户端拿到这个wsdl后,会向这个地址请求数据。

看看client2.php

TESTSOAP("1","2","3",0,"4");?>

很简单就两句话,通过wsdl传入5个参数。

再看Server.php

注意这个就是wsdl里面紫色框内的url地址。

 SOAP_1_2));$server->setClass("Service"); //注册Service类的所有方法 $server->handle(); //处理请求?>

同样很简单。

抓包,启动php client2.php

查看抓包报文,格式很简单,构建字符串很容易,解析固定的参数也不难。

但是有个问题,就是返回值(0 ),返回值不能识别。估计返回个0看来是不行的。

这里在client里面打印了一下返回值的格式

TESTSOAP("1","2","3",0,"4");echo gettype($a1);echo "\n";echo var_dump($a1);?>

发现是stdclass object,我就在function TESTSOAP做了如下修改

$andy = array();$andy = (object)$andy;$andy->a = 100;$andy->b = "hahahaha";return $andy;

虽然是object了,但是还是不对,格式不正确,那么这个wsdl:types到底是个什么东西,后面实现了用map试试,总算是实验成果了。

$cardUID = array('Result'=>'100','ErrorDescription'=>'aaaaa');return $cardUID;

抓包如下

可以看见100和aaaaa。

如此,soap的实际格式也一览无余了,只是简单实现几个接口,用字符串拼装和解析就可以完成了。

关于"SOAP如何构建实际的报文格式"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

格式 版本 参数 报文 编译 字符 字符串 接口 实际 地址 方法 环境 篇文章 还是 支持 功能 对方 就是 更多 紫色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 中关村互联网 科技集团 江苏根荣互联网科技 互联网科技保险 互联网最新的科技有限公司 安徽鑫晟辉互联网科技 互联网科技大会 深圳互联网科技怎么样 随着互联网科技发展 欧洲十大科技互联网公司 互联网5g黑科技有哪些 链环科技传统企业怎么转型互联网 杭州披云加互联网科技有限公司 上海创道互联网络科技有限公司 互联网安防科技感 世界互联网科技成果奖 互联网金融金融科技 互联网科技创业计划的风险分析 中国主要互联网科技公司 小牛互联网科技有限公司地址 山东特亿宝互联网科技有限公司 腾讯科技 互联网女皇 上游互联网科技 天扬科技互联网广告 深圳卡尔迅互联网科技有限公司怎么样 互联网公司会议桌创意科技软装饰 互联网实体化科技化 互联网汽车科技小镇 中化能源互联网科技招聘 伍佰万互联网科技是干嘛的
0