服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - PHP XML error parsing SOAP payload on line 1

PHP XML error parsing SOAP payload on line 1

2019-11-01 13:50php教程网 PHP教程

PHP中GBK页面调用WebService的编码问题:XML error parsing SOAP payload on line 1

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依赖注入原理与用法分析

    PHP依赖注入原理与用法分析

    这篇文章主要介绍了PHP依赖注入原理与用法,简单讲述了依赖注入的概念、原理并结合实例形式分析了php实现与使用依赖注入的相关操作技巧,需要的朋友可...

    dongxie5484942019-09-10
  • PHP教程php处理多图上传压缩代码功能

    php处理多图上传压缩代码功能

    这篇文章主要介绍了php处理多图上传压缩代码功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 ...

    qq_204110091712019-09-25
  • PHP教程PHP实现图片压缩

    PHP实现图片压缩

    这篇文章主要为大家详细介绍了PHP实现图片压缩,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    江南极客2532019-09-02
  • PHP教程php进程daemon化的正确实现方法

    php进程daemon化的正确实现方法

    守护进程(Daemon)是运行在后台的一种特殊进程。下面这篇文章主要给大家介绍了关于php进程daemon化的正确实现方法,文中通过示例代码介绍的非常详细,...

    daisy1952019-09-08
  • PHP教程php微信公众号开发之图片回复

    php微信公众号开发之图片回复

    这篇文章主要为大家详细介绍了php微信公众号开发之图片回复,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    dq_0954402019-08-31
  • PHP教程PHP PDOStatement::execute讲解

    PHP PDOStatement::execute讲解

    今天小编就为大家分享一篇关于PHP PDOStatement::execute讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    php参考手册4752019-06-24
  • PHP教程关于php unset对json_encode的影响详解

    关于php unset对json_encode的影响详解

    这篇文章主要给大家介绍了关于php unset对json_encode的影响的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    冒雨ing1742019-08-29
  • PHP教程PHP命名空间与自动加载机制的基础介绍

    PHP命名空间与自动加载机制的基础介绍

    这篇文章主要给大家介绍了关于PHP命名空间与自动加载机制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PHP具有一定的参考学习价...

    woider1142019-08-28