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的FTP学习(二)
Oct 09 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
实现php删除链表中重复的结点
Sep 27 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
php 函数中静态变量使用的问题实例分析
Mar 05 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
xss文件页面内容读取(解决)
2010/11/28 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
python多线程与多进程及其区别详解
2019/08/08 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
JAVA和C++的区别
2013/10/06 面试题
酒店副总经理岗位职责范本
2014/02/04 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
师范生求职信
2014/06/14 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫