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 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
php的一个简单加密解密代码
Jan 14 PHP
php语言的7种基本的排序方法
Dec 28 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 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
星际实力自我测试
2020/03/04 星际争霸
PHP 加密解密内部算法
2010/04/22 PHP
php之Memcache学习笔记
2013/06/17 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
js不是基础的基础
2006/12/24 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
express express-session的使用小结
2018/12/12 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
python中有关时间日期格式转换问题
2019/12/25 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
终止劳动合同协议书
2014/04/14 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
Python绘画好看的星空图
2022/03/17 Python
Go获取两个时区的时间差
2022/04/20 Golang