当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP XML error parsing SOAP payload on line 1

PHP XML error parsing SOAP payload on line 1

2019年06月06日  | 移动技术网IT编程  | 我要评论
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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网