如何使用Axis传送附件[转载]
来源:互联网 发布:淘宝外卖怎么样 编辑:程序博客网 时间:2024/05/14 07:50
使用Axis传送附件有两种方式:
1. 将你要传送的文件封装在DataHandler中,然后将DataHandler对象或DataHandler数组(多个文件传送的时候)作为客户端调用函数的参数(从客户端上传文件到服务器)Axis服务的返回类型(从服务器端下载文件到客户端)进行传输。
2. 还有一种方式是直接修改soap信封的内容,将附件信息加到soap信封中发送。
这里我们只讨论第一种方法,因为它实现起来非常简单。关于第二种方法在Axis包的webapps/attachments/TestRf.java中有详细的原码可以参考。
下面的例子是把文件从服务器端下载到客户端:
1.服务端程序:
假设传输多个文件:在服务器端将文件取出来,并将文件封装在DataHandler数组中。
代码如下:
DataHandler[] ret = new DataHandler[totalFileNum];
... ...
java.io.File myFile = new java.io.File(filePath);
if(myFile.isFile() && myFile.canRead())
{
String fname = myFile.getAbsoluteFile().getCanonicalPath();
DataHandler[0] = new DataHandler(new FileDataSource(fname));
}
... ...
return ret;
上面的代码将所有的文件封装在了DataHandler数组中,并返回。
2. 客户端的访问:
代码如下:
Service service = new Service();
Call call = (Call) service.createCall();
URL myURL = new URL("http://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.registerTypeMapping(DataHandler.class, qnameAttachment, JAFDataHandlerSerializerFactory.class,JAFDataHandlerDeserializerFactory.class); //为附件(即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.File(recDH.getName()); //文件生成
}
3. 服务的部署:
注意:你要在部署的时候,定义DataHandler的序列化生成器。
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/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.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory"
languageSpecificType="java:javax.activation.DataHandler" qname="ns1:DataHandler"
serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>
</deployment>
运行java org.apache.axis.client.AdminClient %* deploy.wsdd,部署服务。
- 如何使用Axis传送附件[转载]
- 如何使用Axis传送附件
- 如何使用Axis传送附件[原]
- soap消息如何传送附件
- 使用AXIS开发webservice(转载)
- axis传递附件
- 使用XFire和gSoap传送多个附件
- 如何使用Axis发布WebService
- axis 使用 wsdl 文件 生成 webservice的 client 端 ,并传送数据的解决方案
- 如何使用Axis开发Webservice应用程序
- 如何使用axis构建SOAP应用程序
- 如何使用C++传送网络数据
- ubuntu下如何使用minicom传送文件
- 【转载】使用myEclipse,tomcat 和Axis发布webService
- axis web service传送 两个 对象数组
- WebService(4)-AXIS高级特性 传送文件
- WebService(4)-AXIS高级特性 传送文件
- Axis使用
- AXIS全攻略(一)[原]
- 经典面试问题回答思路
- 很深刻东西,让天津人觉得没脸见人。好好反省一下!
- AXIS全攻略(二)[原]
- 北京酒吧指南
- 如何使用Axis传送附件[转载]
- 照镜子为何左右颠倒,而不是上下颠倒
- 未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。
- 利用xampp将apache和tomcat整合
- linux 安装遇到的问题和解决
- 网络安全审计系统浅谈
- 一个犯了N久的错误
- 如同asp那样从html页面post数据到另一个页面asp.net
- 分页