Java调用wsdl,怎么实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java调用wsdl,怎么实现相关的知识,希望对你有一定的参考价值。
java调用wsdl的步骤如下,主要是使用第三方框架:
步骤如下:
1.下载AXIS2类库,AXIS2是目前java调用webservice的一个主要方法(由于更新较频繁,请自行google该类库的网址)
2.由于是第三方webservice,直接引入AXIS2的包就可以用了,代码如下:
import java.rmi.RemoteException;import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class webServiceTest
public String invokeRemoteFuc()
String endpoint = "http://localhost:8080/webservice/services/helloworld";
String result = "no result!";
Service service = new Service();
Call call;
Object[] object = new Object[1];
object[0] = "Dear I miss you";//Object是用来存储方法的参数
try
call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);// 远程调用路径
call.setOperationName("say");// 调用的方法名
// 设置参数名:
call.addParameter("str1", // 参数名
XMLType.XSD_STRING,// 参数类型:String
ParameterMode.IN);// 参数模式:\'IN\' or \'OUT\'
// 设置返回值类型:
call.setReturnType(XMLType.XSD_STRING);// 返回值类型:String
result = (String) call.invoke(object);// 远程调用
catch (ServiceException e)
e.printStackTrace();
catch (RemoteException e)
e.printStackTrace();
return result;
public static void main(String[] args)
webServiceTest t = new webServiceTest();
String result = t.invokeRemoteFuc();
System.out.println(result);
该方法的原理很简单,通过AXIS2封装好的类设置URL和参数,直接调用就好了,我们要关注的就是设置URL,方法,还有方法的参数,其他的copy&paste好啦,很简单吧,再看看其他的方法,我勒个去了,害我瞎搞两天。迟点上个源码共大家参考!
参考技术A 步骤如下:1.下载AXIS2类库,AXIS2是目前java调用webservice的一个主要方法(由于更新较频繁,请自行google该类库的网址)
2.由于是第三方webservice,直接引入AXIS2的包就可以
代码如下:
import java.rmi.RemoteException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class webServiceTest
public String invokeRemoteFuc()
String endpoint = "http://localhost:8080/webservice/services/helloworld";
String result = "no result!";
Service service = new Service();//新建一个service
Call call;
Object[] object = new Object[1];
object[0] = "Dear I miss you";//Object是用来存储方法的参数
try
call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);// 远程调用路径
call.setOperationName("say");// 调用的方法名
// 设置参数名:
call.addParameter("str1", // 参数名
XMLType.XSD_STRING,// 参数类型:String
ParameterMode.IN);// 参数模式:'IN' or 'OUT'
// 设置返回值类型:
call.setReturnType(XMLType.XSD_STRING);// 返回值类型:String
result = (String) call.invoke(object);// 远程调用
catch (ServiceException e)
e.printStackTrace();
catch (RemoteException e)
e.printStackTrace();
return result;//返回值
public static void main(String[] args)
webServiceTest t = new webServiceTest();
String result = t.invokeRemoteFuc();
System.out.println(result); //输出
通过AXIS2封装好的类设置URL和参数,直接调用。 参考技术B 导入axis的八个包:
axis.jar
commons-discovery.jar
commons-logging.jar
jaxrpc.jar
saaj.jar
wsdl4j.jar
axis-ant.jar
log4j-1.2.8.jar
开发客户端程序。开发客户端程序的项目中要加入axis.jar包。
文件:TestWebService.java
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class TestWebService
public static void main(String[] args)
try
//还记得刚才的那个WebService的services.xml中的namespace吗?
String endpoint = "http://localhost:8080/uum/services/Hello.jws?wsdl";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("GetName"); // 这里是的Hello类中的方法名(注意大小写)
call.setReturnType(XMLType.XSD_STRING); // 返回值类型。
call.addParameter("name",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
String[] str= "张三";
Object[] o = str;
//Object[] o =null;//如果你的方法中没有参数,那么就这样写吧。
String hello = (String) call.invoke(o);// 做方法执行。
System.out.println(hello);
catch (Exception e)
System.err.println(e.toString());
执行这段代码,将会在命令行中输出 “hello 张三”,表示测试成功。
Axis下载地址为http://ws.apache.org/axis/
这个就是web service框架,学一下这个例子就会了追答
亲,记得采纳哦
本回答被提问者和网友采纳怎么用Java通过wsdl地址调用WebService求代码
webservice 使用说明书,就是wsdl.
wsdl说明是是基于xml格式的
通过wsdl说明书,就可以完整的描述一个服务端对外发布的服务
生成客户端调用代码:
语法1: wsimport -s . wsdl说明书地址
语法2:wsimport -keep -p 包名称 wsdl说明书地址
直接用cmd控制调用上面代码,把生成的代码直接复制到你的项目中,就可以使用了
http://www.cnblogs.com/sun_moon_earth/archive/2009/02/03/1383308.html本回答被提问者采纳 参考技术B 给不了啊,要根据wsdl协议生成。不同的协议对应的代码是不一样的。 参考技术C JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(RService.class);
factory.setAddress(URL);
RService rService = (RService) factory.create();
Result result = rService.execute("f", elements);
以上是关于Java调用wsdl,怎么实现的主要内容,如果未能解决你的问题,请参考以下文章
怎样调用java的webservice,wsdl怎样生成java代码
怎么用Java通过wsdl地址调用WebService求代码
java调用webservice访问时,有iis认证怎么解决