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 相关文章推荐
第三节--定义一个类
Nov 16 PHP
php扩展ZF――Validate扩展
Jan 10 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
Yii实现简单分页的方法
Apr 29 PHP
Yii 框架使用数据库(databases)的方法示例
May 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
德生PL330的评价与改造
2021/03/02 无线电
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
Puppet的一些技巧
2018/09/17 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
python实现杨辉三角思路
2017/07/14 Python
python字典DICT类型合并详解
2017/08/17 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
小学教师师德反思
2014/02/03 职场文书
美术教学感言
2014/02/22 职场文书
技能比武方案
2014/05/21 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
导游词之介休绵山
2019/12/31 职场文书
用Python实现Newton插值法
2021/04/17 Python
基于python制作简易版学生信息管理系统
2021/04/20 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server