在第1行中解析SOAP有效负载的PHP错误
xml:描述数据的标准方法
SOAP:用于信息交换的简单对象访问协议
Web服务描述语言
UDDI:通用描述、发现和集成,是一种基于XML语言的独立的基于Internet的业务描述协议。
肥皂默认传输是UTF-8的编码,这就决定了默认Web服务也是UTF-8编码。
该项目是维持现在是一个PHP项目,这是由GBK编码。在自己提供的WebService调用方法时,它会遇到编码问题。PHP页面调用WebService,和WebService调用另一个PHP类来调用COM组件。这大概是这样的。
复制代码代码如下所示:
PHP页面(GBK)-服务(UTF-8)PHP(GBK)
在问题出现之前,一切都很平静,而且花了很多年,有一天公司收购了其他公司。为了集成服务,用户信息也被集成。原来公司所有用户的帐号都是由英文字符加数字组成的。被收购公司并没有做这样的限制,该帐号有中文字符,在集成之后,出现了问题:MSG解析中的错误:XML错误解析第1行的SOAP有效负载:!
PHP是不是新的接触非常熟悉,和netbeans调试灰不是很好,所以打开VS,报价服务,并开始测试,结果回来找不到用户,这是一个随机码。在好的,看过之后,WebService的UTF-8代码发送给PHP类,和编码是不一致的。转换成GBK,然后递过去,接收数据,找到用户,但仍然混乱的代码。后返回的数据转换为UTF-8,一切OK!测试VS下的一切!在试验机上!开始测试!打开后,随机代码!MSG解析中的错误:仍然是XML错误解析第1行上的SOAP有效负载:无效字符{详细}!
冷静下来,继续分析!它应该是结果的PHP页面调用WebService!下面对测试页面是UTF-8,和他们之间没有什么问题,但是PHP页面是GBK。经过修改,一切又恢复平静。
复制代码代码如下所示:
电话:PHP页面参数转换为UTF-8 -> WebService -> PHP转换成GBK
返回:PHP -> WebService -> UTF-8,接收到的PHP页面,转换成GBK