webservice传附件
axis用过吧?版本1就可以
将你要传送的文件封装在DataHandler中,然后将DataHandler对象或DataHandler数组(多个文件传送的时候)
作为客户端调用函数的参数(从客户端上传文件到服务器)Axis服务的返回类型(从服务器端下载文件到客户端)进行传输。
1.服务端程序:
假设传输多个文件:在服务器端将文件取出来,并将文件封装在DataHandler数组中。
代码如下:
DataHandler[] ret = new DataHandler[totalFileNum];
... ...
java.io.File myFile = new java.io.File(filePath);
if(myFile.isFile() && myFile.canRead()){
String fname = AbsoluteFile().getCanonicalPath();
DataHandler[0] = new DataHandler(new FileDataSource(fname));
}
调用webservice服务... ...
return ret;
2. 客户端的访问:
代码如下:
Service service = new Service();
Call call = (Call) ateCall();
URL myURL = new URL("192.168.0.26:8080/axis/servlet/AxisServlet");
call.setTargetEndpointAddress(myURL); //设定服务的主机和位置
call.setOperationName(new QName("urn:MyAttachServer","echoDir")); //设置要调用的服务的方法
QName qnameAttachment = new QName("urn:MyAttachServer","DataHandler");
call.addParameter("source", XMLType.XSD_STRING ,ParameterMode.IN); //设置服务调用方法的传入参数类型
call.setReturnType(XMLType.SOAP_ARRAY); //设置调用服务方法的返回类型,由于返回的是DataHandler数组,所以设置为SOAP_ARRAY类型
javax.activation.DataHandler[] ret = (javax.activation.DataHandler[])call.invoke(new Object[]{null}); //调用方法
for (i = 0; i < ret.length; ++i){
DataHandler recDH = ret[i];
java.io.File receivedFile = new java.io.Name()); //文件生成
}
3. 服务的部署:
注意:你要在部署的时候,定义DataHandler的序列化生成器。
编写deploy.wsdd文件:
<deployment xmlns="/axis/wsdd/" xmlns:java="/axis/wsdd/providers/java"
xmlns:ns1="urn:att_STC_Server" >
<service name="urn:att_STC_Server" provider="java:RPC" >
<parameter name="className" value="samples.att_STC.att_STC_Server"/>
<parameter name="allowedMethods" value="echoDir"/>
<typeMapping deserializer="org.ding.ser.JAFDataHandlerDeserializerFactory"
languageSpecificType="java:javax.activation.DataHandler" qname="ns1:DataHandler"
serializer="org.ding.ser.JAFDataHandlerSerializerFactory"
encodingStyle="/soap/encoding/"/>
</service>
</deployment>
你会有个接口地址
这个接口可能是以wsdl结尾的
输入浏览器地址栏 可能会看到类似于xml结构的东
西
这个是正常的
然后在apache上,下个cxf,解压后把基本的jar包导入lib里
(那些基本的我也记不得了,网上搜索下吧)
然后配置好cxf的环境(因为要用到cxf bin包里的一个工具,和tomcat一样的配法)
打开cmd 输入wsdl2java
如果有命令提示的话说明配置成功
在cmd中进入 cxf的bin目录里 输入 wsdl2 -src -client 接口地址 (好像是这样的 有点记不住了,网上查下吧)
如果成功的话在bin目录会有个文件夹 这个文件夹就是你的客户端的代码了
拷贝到项目里 调用这个客户端里的接口名就是了
大体的步骤就是这样了 自己多在网上查查吧
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论