PHP XML error parsing SOAP payload on line 1
2010-06-17 09:28
786 查看
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
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使用SOAP扩展实现WebService的方法
- PHP使用NuSOAP调用Web服务的方法
- PHP实现Soap通讯的方法
- PHP中soap的用法实例
- PHP使用SOAP调用.net的WebService数据
- 重新封装zend_soap实现http连接安全认证的php代码
- PHP调用.NET的WebService 简单实例
- PHP实现WebService的简单示例和实现步骤
- php中创建和调用webservice接口示例
- PHP调用JAVA的WebService简单实例
- 在PHP中利用wsdl创建标准webservice的实现代码
- php实现通过soap调用.Net的WebService asmx文件
相关文章推荐
- PHP webservice错误:XML error parsing SOAP payload on line 1解决方法
- PHP XML error parsing SOAP payload on line 1
- PHP webservice错误:XML error parsing SOAP payload on line 1解决方法
- PHP中GBK页面调用WebService的编码问题:XML error parsing SOAP payload on line 1
- XML error parsing SOAP payload on line 2: Invalid document end
- [php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
- 安装完PHP后启动httpd报错:httpd: Syntax error on line 53 ...
- Error parsing XML: unbound prefix on XXX解决办法
- PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0
- PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
- Fatal error: Call to undefined function ParCv() in E:\AppServ\www\include\dedesql.class.php on line
- ASP.NET 页面错误: "asp.net XML Parsing Error: no element found Line Number 1, Column 1"
- PHP中Notice: unserialize(): Error at offset 109 of 615 bytes in on line 的解决方法
- 解决:Fatal error: Call to undefined function parcv() in include\dedesql.class.php on line 489
- XML Parser Error on line 1: 前言中不允许有内容。
- [ERROR] XML Parser Error on line 11: 注释中不允许出现字符串 "--"
- XML Parser Error on line 1: 前言中不允许有内容。
- mybatis逆向工程出现XML Parser Error on line 1: 前言中不允许有内容。
- 解决org.apache.jasper.JasperException: org.apache.jasper.JasperException: XML parsing error on file org.apache.tomcat.util.scan.MergedWebXml
- rsyslogd: error during parsing file /etc/rsyslog.conf, on or before line 55: warnings occured in fil