知识大全 PHP5 在调用 JAVA WebService 时遇到的各种问题解决方法

Posted 元素

篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP5 在调用 JAVA WebService 时遇到的各种问题解决方法相关的知识,希望对你有一定的参考价值。

PHP5 在调用 JAVA WebService 时遇到的各种问题解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  开始gank

  服务端

  Spring +CXF JDK

  “应该是”自动生成的wsdl文件<服务端不是我们的>

  客户端

  PHP

  碰见的第一个问题

  SOAP ERROR: Encoding: object has no id property

  但是API文档上说不需要id 查看wsdl文件内容

  <xs:plexType name=seal><xs:sequence><xs:element name=id type=xs:long/><xs:element minOccurs=" " name=name type=xs:long/>

  查阅schema文档 有如下内容

  通过 schema 我们可使用 maxOccurs 和 minOccurs 属性来定义某个元素可能出现的次数 maxOccurs 定义某元素出现次数的最大值 而 minOccurs 则定义某元素出现次数的最小值 maxOccurs 和 minOccurs 的默认值都是 !(好吧 这个是服务端的问题?然后自己随便写了个值 通过了 )

   PS 中间有个小环节 我尽然去看了PHP的源代码

  SOAP中的php_encoding c里面的函数 model_to_xml_object

  static int model_to_xml_object(xmlNodePtr node sdlContentModelPtr model zval *object int style int strict TSRMLS_DC)

  //一小段代码

   else if (model >min_occurs == ) return ; else if (strict) soap_error (E_ERROR "Encoding: object has no %s property" model >u element >name);//明显就是<span >它!</span> return ;

  我是从这里发现问题出现在min_occurs上 所以才解决了上面问题(是不是对方不太规范?)

   第二个问题

  looks like we got no XML document

  这个可是郁闷了 解决了好久

  已经返回来数据了 然后我抓包(貌似有方法可以直接显示数据) 发现返回的数据类似如下格式

   HTTP/ OK Server: Apache Coyote/ Content Type: multipart/related; type=application/xop+xml; boundary="uuid: c c de ab dc dcac"; start="<root message@cxf apache >"; start info="text/xml" Content Length: Date: Tue Dec : : GMT uuid: c c de ab dc dcac Content Type: application/xop+xml; charset=UTF ; type=text/xml; Content Transfer Encoding: binary Content ID: <root message@cxf apache > <soap:Envelope xmlns:soap=":Body><ns :createSealResponse xmlns:ns =": : </date><msg>Logic error</msg><result>sfn cn:瀵逛笉璧凤纴姝ゅ烟钖嵝€滃彲淇$绣绔欌€濋獙璇佹湇锷$敌璇锋鍦ㄥ镙镐腑锛屼笉鑳藉啀娆℃敞鍐岋紒</result><result><span >zhjx </span>:瀵逛笉璧凤纴姝ゅ烟钖嵝€滃彲淇$绣绔欌€濋獙璇佹湇锷$敌璇锋鍦ㄥ镙镐腑锛屼笉鑳藉啀娆℃敞鍐岋紒</result></return></ns :createSealResponse></soap:Body></soap:Envelope> uuid: c c de ab dc dcac 明显不是XML 所以PHP老大就报错了

  询问对方 答复是

  CXF设置了如下上传属性 关键点就是MTOM PHP SOAP扩展默认是乎不支持这个玩意

  <jaxws:properties> <entry key="mtom enabled" value="true" /> </jaxws:properties>

  baidu google 可以通过WSO WSF FOR PHP 扩展实现 嫌弃麻烦继续找

  看了一下官方文档介绍

  有条回复帮我解决了 最终解决方法如下

cha138/Article/program/PHP/201311/21341

相关参考

知识大全 如何在各种开发语言中调用WEBService

如何在各种开发语言中调用WEBService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!HTML

知识大全 如何在ASP.Net Ajax中调用WebService

如何在ASP.NetAjax中调用WebService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 C#调用WebService示例

C#调用WebService示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#调用WebS

知识大全 在JavaScript中调用ASP.NET WebService的简单方法

在JavaScript中调用ASP.NETWebService的简单方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 C# webservice调用方法总结

C#webservice调用方法总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一WebSe

知识大全 ASP.NET 2.0 AJAX中Webservice调用方法

ASP.NET2.0AJAX中Webservice调用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 c#webservice的简单示例

  是webservice就概念上来说可能比较复杂不过我们可以有个宏观的了解webservice就是个对外的接口里面有函数可供外部客户调用(注意里面同样有客户不可调用的函数)假若我们是服务端我们写好了

知识大全 解析php5配置使用pdo

  检查php扩展库中是否存在php_pdodll(当调用MsSQL同时还需要php_pdo_mssqldll当调用MySQL同时还需要php_pdo_mysqldll)  打开phpini配置文件加

知识大全 Java开发的WebService获取客户端IP地址

Java开发的WebService获取客户端IP地址  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 调用.net程序集中的方法

  虽然BiztalkServer提供了众多的内置功能然而在一些情况下可能还需要调用程序集中的函数因为在Net程序集中可以非常方便地调用WebService访问数据库另一方面有些函数是程序集中已经写好