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连接局域网MYSQL数据库的简单实例
Aug 26 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
用PHP代码给图片加水印
Jul 01 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
PHP学习笔记之一
2011/01/17 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
PHP安全上传图片的方法
2015/03/21 PHP
php cookie 详解使用实例
2016/11/03 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
python创建线程示例
2014/05/06 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
python读取xlsx的方法
2018/12/25 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
python requests指定出口ip的例子
2019/07/25 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
新春寄语大全
2014/04/09 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
社区灵活就业证明
2014/11/03 职场文书
财务工作失误检讨书
2015/02/19 职场文书
小鞋子观后感
2015/06/05 职场文书