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 相关文章推荐
一个高ai的分页函数和一个url函数
Oct 09 PHP
第七节--类的静态成员
Nov 16 PHP
PHP 数组实例说明
Aug 18 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
extjs render 用法介绍
2013/09/11 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
多版本Python共存的配置方法
2017/05/22 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
pytest中文文档之编写断言
2019/09/12 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
Python中pass的作用与使用教程
2020/11/13 Python
试述DBMS的主要功能
2016/11/13 面试题
运动会解说词50字
2014/01/18 职场文书
小学一年级学生评语
2014/04/22 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
开展创先争优活动总结
2014/08/28 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
五一放假通知怎么写
2015/08/18 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
2016年敬老月活动总结
2016/04/05 职场文书