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运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
PHP 透明水印生成代码
Aug 27 PHP
基于PHP文件操作的详解
Jun 05 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
Jan 07 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 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学习笔记之一
2011/01/17 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
php经典趣味算法实例代码
2020/01/21 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
Python实现批量下载文件
2015/05/17 Python
Python 内置函数complex详解
2016/10/23 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
python获取本机所有IP地址的方法
2018/12/26 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
python2 对excel表格操作完整示例
2020/02/23 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
美国校园市场:OCM
2017/06/08 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
大学生标准推荐信范文
2013/11/25 职场文书
证券期货行业个人的自我评价
2013/12/26 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
工作表扬信范文
2015/01/17 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书