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 disk_free_space 返回目录可用空间
May 10 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php分页函数示例代码分享
Feb 24 PHP
php合并数组中相同元素的方法
Nov 13 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
Yii rules常用规则示例
Mar 15 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
详解php伪造Referer请求反盗链资源
Jan 24 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的FTP学习(四)
2006/10/09 PHP
简单的PHP图片上传程序
2008/03/27 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP里的单例类写法实例
2015/06/25 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python中时间模块的基本使用教程
2019/05/14 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
临床专业自荐信
2014/06/22 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
大学生自我评价范文
2015/03/03 职场文书
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸