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 用数组降低程序的时间复杂度
Dec 04 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
PHP程序员基本要求和必备技能
May 09 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 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中的路径问题与set_include_path使用介绍
2014/02/11 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
prototype Element学习笔记(篇二)
2008/10/26 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python 串口读写的实现方法
2019/06/12 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
python入门之井字棋小游戏
2020/03/05 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
Python实现京东抢秒杀功能
2021/01/25 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
实习护士自我鉴定
2013/10/13 职场文书
汽车检测与维修专业求职信
2013/10/30 职场文书
网络编辑岗位职责
2014/03/18 职场文书
2015年班组长工作总结
2015/04/10 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
高三教师工作总结2015
2015/07/21 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL