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+MySql编写聊天室
Oct 09 PHP
php预定义常量
Dec 25 PHP
开源SNS系统-ThinkSNS
May 18 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
php不用正则验证真假身份证
Nov 06 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
php修改数组键名的方法示例
Apr 15 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP7修改的函数
Mar 09 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
PHP4之真OO
2006/10/09 PHP
PHP中的extract的作用分析
2008/04/09 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
JavaScript 原型与继承说明
2010/06/09 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
7个JS基础知识总结
2014/03/05 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
浅析Ajax语法
2016/12/05 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
Python列表计数及插入实例
2014/12/17 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
Python3运算符常见用法分析
2020/02/14 Python
python制作微博图片爬取工具
2021/01/16 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
中科软测试工程师面试题
2012/06/16 面试题
会计助理岗位职责
2014/02/17 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
干部考察材料范文
2014/12/24 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
python中对列表的删除和添加方法详解
2022/02/24 Python