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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
php自动跳转中英文页面
Jul 29 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
php 生成签名及验证签名详解
Oct 26 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JavaScript中的some()方法使用详解
2015/06/09 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
Vue实现简单计算器案例
2020/02/25 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
用Python编写简单的微博爬虫
2016/03/04 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python读取Kafka实例
2019/12/23 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
家长会学生家长演讲稿
2013/12/29 职场文书
光盘行动倡议书
2014/02/02 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
js Proxy的原理详解
2021/05/25 Javascript