XFire中进行文件下载

下面是Web服务端的代码

首先是web.xml和services.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app> <!-- 上面的是web.xml内容 --> <!-- 下面的是services.xml内容 --> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>XFireDownloadDemo</name> <namespace>http://www.jadyer.com/XFireDownloadDemo</namespace> <serviceClass>com.jadyer.server.FileDownload</serviceClass> <implementationClass>com.jadyer.server.FileDownloadImpl</implementationClass> </service> </beans>

然后是Web服务端暴露的接口及其实现类

package com.jadyer.server; public interface FileDownload { public String download(String fileName); } /** * Web服务端暴露的接口及其实现类 */ package com.jadyer.server; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.codehaus.xfire.util.Base64; public class FileDownloadImpl implements FileDownload { public String download(String fileName) { String returnValue = null; try { File dir = new File("D://test//"); if (!dir.exists()) { // dir.mkdir(); return "Error: 目录不存在"; } File tmp = new File(dir, fileName); if (tmp.exists()) { InputStream is = new FileInputStream(tmp); // Get the size of the file long length = tmp.length(); // You cannot create an array using a long type. It needs to be an int type. // Before converting to an int type, check to ensure that file is not larger than Integer.MAX_VALUE. if (length > Integer.MAX_VALUE) { System.out.println("File is too large"); } // Create the byte array to hold the data byte[] bytes = new byte[(int)length]; // Read in the bytes int offset = 0; int numRead = 0; while (offset<bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) { offset += numRead; } // Ensure all the bytes have been read in if (offset < bytes.length) { throw new IOException("Could not completely read file: " + tmp.getName()); } // Close the input stream and return bytes is.close(); String encodedFileString = Base64.encode(bytes); returnValue = encodedFileString; } } catch (IOException e) { e.printStackTrace(); } return returnValue; } }

下面的是客户端的代码,我们这里另外又建立了一个Java Project

首先是Web服务端提供给客户端的接口(这里假设Web服务端提供了)

package com.jadyer.server; public interface FileDownload { public String download(String fileName); }

然后是我们自己写的客户端代码

package com.jadyer.client; import java.io.FileOutputStream; import java.io.IOException; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import org.codehaus.xfire.util.Base64; import com.jadyer.server.FileDownload; /** * XFire实现文件下载,主要是将文件转换成Base64的字符串,来进行传递 * @see 本客户端需要引入MyEclipse6.5提供的XFire 1.2 Core、HTTP Client Libraries两个类库 */ public class testFileDownload { public static void main(String[] args) throws IOException { Service serviceModel = new ObjectServiceFactory().create(FileDownload.class); String url = "http://127.0.0.1:8080/XFire_Download/services/XFireDownloadDemo"; FileDownload service = (FileDownload) new XFireProxyFactory().create(serviceModel, url); //这里ResourceBundleEditor_v0.7.7.zip是位于D:/test/目录下的 //该目录由Web服务端FileDownloadImpl.java指定的 String result = (String) service.download("ResourceBundleEditor_v0.7.7.zip"); //接下来,主要就是将Base64串输出成文件 byte[] bytes = Base64.decode(result); FileOutputStream fos = new FileOutputStream("D://BB.zip"); fos.write(bytes); fos.flush(); fos.close(); } }

客户端在测试之前,先要在D盘根目录下面建立一个名为test的文件夹,这是服务端的接口实现类中限定的

然后将ResourceBundleEditor_v0.7.7.zip拷贝到D:/test/中,最后再运行testFileDownload类

此时在控制台上,将会是一片空白。于是我们移步到D盘的根目录下查看,发现BB.zip则文件下载成功 ^_^ ^_^

xfire全部jar包 xfire全部jar包,齐全直接拿去用,包括了全部的需要的jar 立即下载

相关推荐

xfire1.2.6版本及依赖文件

xfire 1.2.6版本文件,使用方便。 .

XFire简单使用

1 . XFire可以认为是webservice的一个实现。 其下载地址:http://xfire.codehaus.org/ 下载了以后把lib下的所有jar和xfire-all-*.jar拷贝到你的项目里。 配置web.xml xml 代码 xml version="1.0" encoding="UTF-8"?&gt;   &lt;web-app id="WebApp_...

ttitfly的笔记 201

XFire1.2.6完整版JAR包

XFire1.2.6完整版JAR包 XFire1.2.6完整版JAR包XFire1.2.6完整版JAR包XFire1.2.6完整版JAR包

Apache下载、配置与安装

一、Apache下载 1、进入apache官网:http://httpd.apache.org/ 2、点击左边栏的download   3、进入对应的window版本页面   4、选择第三方的链接,我下载的时候选择的第二个,一开始选择ApacheHaus的,但是在选择下载64位的时候跳出了403的错误,提示我没有权限下载,具体原因我也没搞懂,十分郁闷。之后便选择第二个Apach...

s9abriel 619

java xfire下载_xFire全部jar包下载_xFire全部jar包官方下载-太平洋下载中心

XFireJava实现WebService的一个框架,可以完成webservice服务的发布以及对发布接口的调用.目录:activation.jarcommons-logging.jarjdom-1.0.jarspring.jarspring-mock.jarstax-api-1.0.1.jarstax-utils-snaPShot-20040917.jarwsdl4j-1.5.2.jarwst...

weixin_34979632的博客 692

XFire 传输文件--文件上传与下载

使用XFire实现文件的传输 定义服务接口 服务实现

jastar的专栏 6646

xfire实现从服务器上传和下载文件

1.1  上传文件到服务器机能1.1.1 概要1)画面机能允许用户选择本地的文件并且上传到服务器中。2)画面迁移主菜单画面的第一个菜单「File」的第一项目「upload」按下,画面起动。1.1.2 画面设计1)设计1.1.1 选择文件窗口  1.1.2 上传文件窗口  1.1.3实现功能 

littlebabycrab的专栏 1034

JAVA应用XFire框架来实现WebServie的大文件传输功能之一(下载

下面是文件下载功能,可以实现大文件的断点续传,其原理是把服务端先把文件内容Byte[]转换成Base64编码字符串返回给客户端,然后客户端接收到后再把该Base64编码过的字符串转换成Byte[],最后写入文件。       至于断点续传的设计很简单,服务端留有一个定位参数,每次读取文件之前,都先定位,然后客户端在调用WebService接口之前,先取得本地该文件的大小,再把该值作为定位参数传过

xufaxi的专栏 2070

xfirexfire-all-1.2.6.jar等

需要引入如下包:commons-codec-1.2.jar、commons-httpclient-3.0.1.jar、jdom.jar、xfire-all-1.2.6.jar、wsdl4j-1.5.1.jar、commons-logging-1.0.4.jar、XmlSchema-1.4.7.jar

XFire1.2.6完整JAR包

xfire-distribution-1.2.6.zip

xfire 与 spring

<br />xfire 释疑:<br />JSR 181 --指注释符方式定义webservice<br />JAXB 2.0 - 配置文件<br /> <br />XFire中的安全验证and自定义WSDL文档的参数名<br />http://blog.csdn.net/jadyer/archive/2010/12/22/6092308.aspx<br /> <br /><?xml version="1.0" encoding="UTF-8"?> <mappings> <mapping> <!

399

在Android中通过XFire WebService远程上传以及下载图片

有时我们可以看到,图片往往被提交到服务器端,这里我通过XFire框架来实现远程上传以及下载图片的功能。 首先我们来看看从服务器端下载图片的功能:   我用的是KSOAP框架,我之前的文章有讲述过。在这里不要多说,贴上代码。 首先我们看看Acitivity中的代码:   package com.net.connect.app; import java.io.File; imp...

thunder_yan的专栏 125

xfire插件安装到myeclips10

从网上到了很多的资料,总是弄好不好,y

迪士尼公主的专栏 5581
上一篇: XFire中进行文件上传
下一篇: XFire中进行自定义异常
tanzi21
博客等级 码龄18年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值