一、介绍

  • 二进制文件在webservice中的处理。

A:通过byte[]字节数组的方式来传递。比较适合小文件,字节数组不能太大的情况。(本章所用)

B:通过DataHander的方式来进行传递。

1:接口中要定义@MTOM

2:方法中要使用@XmlMimeType(value = "application/octet-stream")

二、需求

  • 1. 客户端从服务端下载附件
  • 2. 客户端上传附件到服务端

三、案例

  2.1  服务端

    2.1.1  编写服务接口

package service;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; /**
* 本服务提供 1. 从服务器中下载附件,以byte[]类型 2. 上传附件到服务器,以byte[]类型
*
* @author Administrator
*
*/
@WebService
public interface IFile { @WebResult(name = "getImageResult")
public byte[] getImage(); public void sendImage(@WebParam(name = "byteArray") byte[] byteArray, @WebParam(name = "fileName") String fileName);
}

    2.1.2  实现服务接口

package service;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.jws.WebService; import org.apache.commons.io.IOUtils; @WebService(endpointInterface = "service.IFile")
public class IFileImpl implements IFile { /**
* 提供给客户端图片的字节流
*/
@Override
public byte[] getImage() {
byte[] byteArray = null;
try {
File file = new File("F:\\server\\1.png");
FileInputStream input = new FileInputStream(file);
byteArray = IOUtils.toByteArray(input);
} catch (Exception e) {
e.printStackTrace();
} return byteArray;
} /**
* 客户端上传的附件的字节流
*/
@Override
public void sendImage(byte[] byteArray, String fileName) { if (byteArray != null && byteArray.length > 0) {
try {
FileOutputStream fileOutputStream = new FileOutputStream("F:\\server\\" + fileName + "");
IOUtils.write(byteArray, fileOutputStream);
} catch (Exception e) {
e.printStackTrace();
}
} } }

    2.1.3  发布服务

package publish;

import javax.xml.ws.Endpoint;

import service.IFileImpl;

public class TestPublish {
public static void main(String[] args) {
Endpoint.publish("http://localhost:3030/first", new IFileImpl()); System.out.println("发布成功.....");
}
}

  2.2  客户端

     2.2.1  用工具生成客户端代码

    2.2.2  测试

package test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.rmi.RemoteException; import org.apache.commons.io.IOUtils; import service.IFile;
import service.IFileProxy; public class Test {
public static void main(String[] args) {
// getImage(); sendImage();
} private static void getImage() {
IFile ifile = new IFileProxy().getIFile();
try {
/**
* 从服务端下载附件的字节流,并保存到当地文件夹
*/
byte[] byteArray = ifile.getImage();
IOUtils.write(byteArray, new FileOutputStream("F:\\client\\test.png"));
} catch (Exception e) {
e.printStackTrace();
} }
       /**
* 上传附件到服务端
*/
private static void sendImage() {
IFile ifile = new IFileProxy().getIFile();
try {
FileInputStream input = new FileInputStream("F:\\client\\2.png");
byte[] byteArray = IOUtils.toByteArray(input);
ifile.sendImage(byteArray, "2.png");
} catch (Exception e) {
e.printStackTrace();
} } }

(八)二进制文件在webservice中的处理(以byte[]字节数组方式)的更多相关文章

  1. Java 中的字符串与 []byte 字节数组

    一.字符串 1.比较 String.HashSet.List 中的 contains 方法 其中, String.List 都使用了 indexOf 方法,本质是遍历,时间效率为 O(n).而 Has ...

  2. (九)二进制文件在webservice中的处理(以DataHandler方式)

    一.需求 1. 客户端从服务端下载附件 2. 客户端上传附件到服务端 二.案例 本章通过DataHander的方式来进行传递. 注意:   1:接口中要定义@MTOM 2:方法中要使用@XmlMime ...

  3. c#中关于结构体和字节数组转化

    最近在使用结构体与字节数组转化来实现socket间数据传输.现在开始整理一下.对于Marshal可以查阅msdn,关于字节数组与结构体转代码如下: using System; using System ...

  4. delphi中如何将string类型的字符串数据转化成byte[]字节数组类型的数据

    var  S:String;  P:PChar;  B:array of Byte;begin  S:='Hello';  SetLength(B,Length(S)+1);  P:=PChar(S) ...

  5. WebService中方法的相关注意事项

    2014-11-14 在WebService中定义方法,有一些注意的地方: (1) 方法上面需要增加 [WebMethod] 属性,标志该方法是一个WebService方法: (2)方法的返回值可以为 ...

  6. MAXIMO系统 java webservice 中PDA移动应用系统开发

    MAXIMO系统 java webservice 中PDA移动应用系统开发  平时经常用的wince PDA手持设备调用c#写的webservice, 当然PDA也可以调用java webservic ...

  7. WebService中实现上传下载文件

    不多说,直接看代码: /*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Gene ...

  8. WCF和WebService中获取当前请求报文的方法

    WCF中: 1. 在hosting WCF的web.config中加入: <system.serviceModel> <serviceHostingEnvironment aspNe ...

  9. 在webservice中传递Hashtable

    webservice中不支持hashtable的数据类型,那么如何在webservice中传递hashtable呢?我们可以通过将hashtable转化为webservice中支持的数组的类型来进行传 ...

随机推荐

  1. Qt之模型/视图(自定义风格)

    Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风 ...

  2. Maven中的SnapShot版本和Release版本

    # Maven中的SnapShot版本和Release版本 ## 区别 - SnapShot 快照版本- Release 发布版本 ## 重要区别 - 本地获取这些依赖的机制不同,如果是快照版本,Ma ...

  3. React——教程 && 零基础入门 && 从实践中学习(待续)

    Tutorial: Intro to React This tutorial doesn’t assume any existing React knowledge. Tip This tutoria ...

  4. 简单模拟CO模块

    promise方式: // 对co模块的简单模拟 function run(gen){ var g = gen(); function next(data){ var result = g.next( ...

  5. Django之form表单验证顺序

    概述 django框架提供了一个forms类,来处理web开发中的表单相关事项.众所周知,form最常做的是对用户输入的内容进行验证,为此django的forms类提供了全面的内容验证支持. 验证过程 ...

  6. PAT 甲级 1048 Find Coins (25 分)(较简单,开个数组记录一下即可)

    1048 Find Coins (25 分)   Eva loves to collect coins from all over the universe, including some other ...

  7. 【创业】2B创业历程

    http://www.woshipm.com/chuangye/2800111.html http://www.woshipm.com/chuangye/2803240.html http://www ...

  8. 《ucore lab1 exercise2》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 题目:使用qemu执行并调试lab1中的软件 为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习: 从CPU加电后执行的第一条指令 ...

  9. [转帖]linux bash环境变量简单总结

    linux bash环境变量简单总结 来源链接:http://www.178linux.com/8005 原创文章,如有转载,请注明原文地址 需要简单学习一下. 其实 我都是直接放一个 .sh文件到 ...

  10. [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...