PHP XML error parsing SOAP payload on line 1


Posted in PHP onJune 17, 2010

WebService,想必大家都比较熟悉,是由“服务提供方”向“服务调用方”提供服务的一种方式。里面有几项关键的技术:

XML:描述数据的标准方法
SOAP:简单对象访问协议,用于信息交换
WSDL:Web服务描述语言
UDDI:通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。

SOAP默认传输的都是UTF-8的编码,这也决定了默认情况下WebService用的也是UTF-8编码。

现在维护的那个项目是一个PHP项目,编码用的全是GBK,在调用自身提供的WebService方法时,就会遇到编码问题了。PHP页面调用WebService,而这个WebService又调用的是另一个调用COM组件的PHP类。大概场景就是这样。

PHP页面(GBK) -> WebService(UTF-8) -> PHP类(GBK)

在未遇到问题之前,一切都是风平浪静的,就这样过了很多年。有一天,公司收购了其它公司,为了整合服务,用户信息也整合到一起了,原公司所有用户的帐户都是由英文字符加数字组成的,而收购的这个公司没有做这样的限定,帐户有汉字的情况。整合之后,问题出现了,“error in msg parsing: XML error parsing SOAP payload on line 1: Invalid character [detail]”!

PHP刚接触不久,不是甚熟,而且NetBeans的调试灰常不好整。所以就打开VS,引用WebService,开始测试。返回的结果,找不到用户,而且是乱码,OK,看了一下之后,由于WebService的UTF-8编码传给PHP类时,编码不一致所导致!转换为GBK再传过去,收到数据后,找到用户,但还是乱码。将返回过来的数据再次转换为UTF-8之后,一切OK!VS下测试一切正常!上测试机!开始测试!打开之后,乱码!仍然是“error in msg parsing: XML error parsing SOAP payload on line 1: Invalid character [detail]”?澹

静下心来,继续分析!应该是PHP页面调用WebService时所导致!VS下面的那个测试页面是UTF-8的,他们之间没有问题,但PHP的这个页面是GBK的。再次修改后,一切又恢复平静了。

调用:PHP页面,参数转换为UTF-8 -> WebService,转换为GBK后 -> PHP类 
返回:PHP类 -> WebService,收到后转化为UTF-8 -> PHP页面,转换为GBK
PHP 相关文章推荐
PHP取得一个类的属性和方法的实现代码
May 22 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
php中apc缓存使用示例
Dec 25 PHP
php开启openssl的方法
May 15 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
thinkphp 验证码 的使用小结
May 07 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 #PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 #PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 #PHP
PHP中实现汉字转区位码应用源码实例解析
Jun 14 #PHP
joomla内置的表单验证功能使用方法
Jun 11 #PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 #PHP
Php获取金书网的书名的实现代码
Jun 11 #PHP
You might like
聊天室php&mysql(三)
2006/10/09 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
python实现推箱子游戏
2020/03/25 Python
python实现手机销售管理系统
2019/03/19 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
演讲稿祖国在我心中
2014/05/04 职场文书
说明书范文
2014/05/07 职场文书
大学生团日活动总结
2015/05/06 职场文书
排球赛新闻稿
2015/07/17 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android