100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > PHP5 在调用 JAVA WebService 时遇到的各种问题解决方法

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

时间:2019-10-22 11:38:06

相关推荐

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

php教程|php手册

PHP5,在,调用,JAVA,WebService,时,遇到,各种,问题,解决,方法,开始,gank,。,服务,端,

php教程-php手册

开始gank。

预约管理系统源码,vscode输入中文,ubuntu学习心得,手机自带tomcat,sqlite支持循环吗,html5 文件夹上传插件,admui前端框架下载,反爬虫session问题,php数组与变量,免费的seo优化软件,代账公司网站代码,手机网页红包,奇闻网模板,帝国当前页面高亮,会员后台管理系统模板,机票预订系统程序源代码lzw

服务端:

web模版源码,vscode快捷键img,ubuntu系统ftp,把图片存在tomcat,java高级爬虫,php 流媒体服务器,抚顺seo优化哪家优惠多,买源码的网站,jquery 注册页面模板下载lzw

Spring3.0.5+CXF2.4,JDK1.6

招聘网站 破解源码,ubuntu系统声音改掉,tomcat8w指定的服务,爬虫要掌握什么,php错误处理及调试视频,张亮seolzw

“应该是”自动生成的wsdl文件

客户端:

PHP5.1.3

碰见的第一个问题:

SOAP-ERROR: Encoding: object has no ‘id’ property

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

查阅schema文档,有如下内容:

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

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 == 0) {

return 2;

} else {

if (strict) {

soap_error1(E_ERROR, “Encoding: object has no ‘%s’ property”, model->u.element->name);//明显就是它!

}

return 0;

}

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

第二个问题:

looks like we got no XML document

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

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

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: multipart/related; type=”application/xop+xml”; boundary=”uuid:0c37c356-41de-4361-9835-ab8dc023dcac”; start=””; start-info=”text/xml”

Content-Length: 790

Date: Tue, 04 Dec 07:57:45 GMT

–uuid:0c37c356-41de-4361-9835-ab8dc023dcac

Content-Type: application/xop+xml; charset=UTF-8; type=”text/xml”;

Content-Transfer-Encoding: binary

Content-ID:

-12-04 15:57:46.124Logic :瀵逛笉璧凤紝姝ゅ煙鍚嶁€滃彲淇$綉绔欌€濋獙璇佹湇鍔$敵璇锋鍦ㄥ鏍镐腑锛屼笉鑳藉啀娆℃敞鍐岋紒:瀵逛笉璧凤紝姝ゅ煙鍚嶁€滃彲淇$綉绔欌€濋獙璇佹湇鍔$敵璇锋鍦ㄥ鏍镐腑锛屼笉鑳藉啀娆℃敞鍐岋紒

–uuid:0c37c356-41de-4361-9835-ab8dc023dcac–

明显不是XML。。所以PHP老大就报错了

询问对方,答复是:

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

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

看了一下官方文档介绍

/soap

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

/**

* 继承SoapClient类,重写__doRequest方法

* @author zhjx922

*/

class ZSoapClient extends SoapClient

{

public function __doRequest($request, $location, $action, $version, $one_way = 0)

{

$response = parent::__doRequest($request, $location, $action, $version, $one_way);

//根据实际情况做处理。。。,如果是<?xml开头,改成<?xml

$start=strpos($response,<soap);

$end=strrpos($response,’>’);

$response_string=substr($response,$start,$end-$start+1);

return($response_string);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。