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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
php加密解密实用类分享
Jan 07 PHP
php短址转换实现方法
Feb 25 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
详细解读php的命名空间(二)
Feb 21 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 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设计模式 php实现状态模式
2015/12/07 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
JS实现div居中示例
2014/04/17 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
Python的logging模块基本用法
2020/12/24 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
初中化学教学反思
2014/01/23 职场文书
个人自我评价范文
2014/02/05 职场文书
运动会开幕式解说词
2014/02/05 职场文书
怀念母亲教学反思
2014/04/28 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
毕业生求职信
2014/06/10 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
居委会工作总结2015
2015/05/18 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android