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 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 PHP
解决laravel5.4下的group by报错的问题
Oct 16 PHP
Yii框架模拟组件调用注入示例
Nov 11 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php addslashes 函数详细分析说明
2009/06/23 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python程序设计入门(4)模块和包
2014/06/16 Python
python实现绘制树枝简单示例
2014/07/24 Python
Python3基础之输入和输出实例分析
2014/08/18 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
python实现贪吃蛇双人大战
2020/04/18 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
介绍一下常见的木马种类
2014/11/15 面试题
竞选班长自荐书范文
2014/03/09 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
呐喊读书笔记
2015/06/30 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python