php调用Java的WebService

chris_zcl 2010-08-04 02:00:33
访问我的WebService会得到以下xml内容


<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions name="LoginServiceService" targetNamespace="http://impl.service.login.module.project.hzl/" xmlns:ns1="http://service.login.module.project.hzl/" xmlns:ns2="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.service.login.module.project.hzl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:import location="http://192.168.0.27:8888/Project/services/loginWebService?wsdl=ILoginService.wsdl" namespace="http://service.login.module.project.hzl/" />
- <wsdl:binding name="LoginServiceServiceSoapBinding" type="ns1:ILoginService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="login">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="login">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="loginResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="LoginServiceService">
- <wsdl:port binding="tns:LoginServiceServiceSoapBinding" name="LoginServicePort">
<soap:address location="http://192.168.0.27:8888/Project/services/loginWebService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>


请问php的Client应该怎么写?我自己写的

<?php
try{
$wsdl = "http://localhost:8888/Project/services/loginWebService?wsdl";
$name = "张文华";
$password = "123456";
$cliente = new SoapClient($wsdl);
print "<p>The result :";
$vem = $cliente->__call('login',array($name, $password));
print $vem;
print "</p>";
print "<br/>";
}catch(Exception $e){
print $e;
}
?>


运行时报异常

SoapFault exception: [ns1:InvalidSecurity] An error was discovered processing the header in D:\workspace\discuz\wstest.php:8 Stack trace: #0 D:\workspace\discuz\wstest.php(8): SoapClient->__call('login', Array) #1 {main}
...全文
178 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jusin2y 2010-08-06
能拿点分吗
回复
foolbirdflyfirst 2010-08-06
既然是java开发者,为何不用java写的soapui。只要wsdl描述正确完整,soapui+php的curl就够了,用soapclient/nusoap什么的都挺烦人,文档写得不明不白,不过是http协议的扩充版,封装得那么隐蔽的方法,不如直接写协议来得畅快。
回复
peng0809 2010-08-06
关注中!
回复
chris_zcl 2010-08-05
[Quote=引用 2 楼 dingsongtao 的回复:]
mixed __call ( string $function_name , array $arguments [, array $options [, array $input_headers [, array $output_headers ]]] )

不知道你java那边,对头有什么限制没???
[/Quote]

知道问题所在了,发布java WebService的人,使用了wss4j的验证系统,需要输入用户名和密码,我把验证去掉后可以调用了

不过还有个问题,java那边接收参数的时候是2个参数,即用户名和密码。而__call的这个方法明显是传递参数数组,也就是说2个方法的参数列表类型不一致,导致我Server那边接收不到参数,这里有没有什么好的处理办法,当然是在不改动WebService那边的情况下~
回复
Dleno 2010-08-04
mixed __call ( string $function_name , array $arguments [, array $options [, array $input_headers [, array $output_headers ]]] )

不知道你java那边,对头有什么限制没???
回复
骄傲青蛙 2010-08-04
SoapClient->__call('login', Array)

--------------------------------

上面代码正确 ? 粘贴出来看看。
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告