一、介绍

  • 二进制文件在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. PHPStorm 快捷键大全(Win/Linux/Mac)

    下面的-符号记得改成 ‘`’,markdown 语法会转义.使用频率是我自己为准.仅供参考   Mac 符号 符号 解释 ⌘ Command ⇧ Shift ⌃ Control ↩ Enter/Ret ...

  2. java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.FilterDispatcher

    老版本的Struts2升级,启动报的错. org.apache.struts2.dispatcher.FilterDispatcher 是web.xml中对struts2  2.2版本的接入点的类. ...

  3. 判断 js 类型的方式

    1. typeof 可以判断出'string','number','boolean','undefined','symbol'但判断 typeof(null) 时值为 'object'; 判断数组和对 ...

  4. oracle数据库的存储原理

    表空间,oracle逻缉存储结构,表空间下包含一个或者多个物理的文件存储.所有用户对象存放在表空间中.与系统有关的对象存放在系统表空间中. 数据库的作用就是实现对数据的管理和查询.任何一个数据库系统, ...

  5. 【Oracle/Java】以Insert ALL方式向表中插入百万条记录,耗时9分17秒

    由于按一千条一插程序长期无反应,之后改为百条一插方式,运行完发现插入百万记录需要9m17s,虽然比MySQL效率差,但比单条插入已经好不少了. 对Oracle的批量插入语法不明的请参考:https:/ ...

  6. OpenSL ES: 利用OpenSL ES播放一个存在于SDcard上的PCM文件

    native-lib.cpp #include <jni.h> #include <string> #include <SLES/OpenSLES.h> #incl ...

  7. 面试准备4——C++相关知识

    指针和引用区别: (1)指针: 指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元: 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已. 如: int a=1;in ...

  8. zblog文件大小超出,上传成功但插入不了

    在zblogphp时,经常会遇到需要上传2m以上的文件或图片,这个时候就需要修改默认上传文件的大小了.看了很多地方的文章都解决不了,后面在麒麟杰博客找到相关解决办法.   工具/原料   zblogp ...

  9. Eclipse中修改某个java项目的jdk版本【我】

    Eclipse中修改某个项目的jdk版本,主要有下面4个地方 右键项目名,有如下3个地方 另外如果要在Tomcat中运行,还可能需要设置运行这个项目的Tomcat的容器的 jdk 版本,设置方式:

  10. windows的mysql无法启动 服务没有报告任何错误

    相信很多人都遇到过安装Mysql的时候出现各种各样的问题,今天小编就教大家解决window下mysql服务没有报告任何错误的情况下无法启动 的问题.本文所用的mysql版本是5.7以上版本,解决方法: ...