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实现利用phpexcel导出数据
Aug 24 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
php表单处理操作
Nov 16 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
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/06/10 PHP
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
Vue组件库发布到npm详解
2018/02/17 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
Python入门篇之对象类型
2014/10/17 Python
Python的Django框架安装全攻略
2015/07/15 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
python日志模块logbook使用方法
2019/09/19 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
分公司经理岗位职责
2013/11/11 职场文书
交通事故协议书
2014/04/15 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
Vue h函数的使用详解
2022/02/18 Vue.js
Python 视频画质增强
2022/04/28 Python