2024年4月12日发(作者:)

通过http传送接收数据

分类: JAVA 2007-07-03 21:27 449人阅读 评论(1) 收藏 举报

通过http传输文件一般分为传送和接收,简单说来就是你向别人发送文件和接收别人传

给你的文件。下面大致说一下这两种情况。

1、 向别人发送文件

目前觉得简单的方式还是通过http以流的形式发送文件,下面给出一部分代码:

/**

* 通过http以流形式传递参数

*

* @param url

* 请求地址

* @param xmlValue

* xml字符串

* @return true post成功,post失败

*/

public static boolean post(String sUrl, String xmlValue) {

try {

if (sUrl == null || ().equals("")) {

throw new Exception("发送指令时目标URL地址无效");

}

// 声明hc变量

URL url = new URL(sUrl);

HttpURLConnection hc = (HttpURLConnection) nnection();

// 设置hc的一些属性

uestMethod("POST");

utput(true);

// 得到outputStream,使之能通过其写入数据

OutputStream os = putStream();

// 进一步优化输出流,使之能写入字符串

OutputStreamWriter osw = new OutputStreamWriter(os, "gb2312");

(xmlValue);

();

();

();

// 用输入流传输数据,以及得到数据

InputStream in = utStream();

();

// 断开connection

nect();

} catch (Exception e) {

tackTrace();

return false;

}

return true;

}

通过这个方法,可以通过http传输数据。

1、 接收别人发过来的数据

接收别人发过来的数据,有两种方法,一种通过字符流,一种通过输入流,但一般都要

有一个地址,比如localhost:8080/app/或者 localhost:8080/app/test,

前者是一个jsp,后者一般是一个servlet,对于向struts这么普及的今天,它应该不是一个

action ,因为后面没有.do嘛:)

下面我们用servlet来演示一下这个例子:(是写在dopost方法里)

A、通过输入流读取

String strFileName = "";

RandomAccessFile file = null;

ServletInputStream sis = null;

try {

// 把文件定义成可读写的

file = new RandomAccessFile(strFileName, "rw");

// 读出输入流

sis = utStream();

// 定义一个大小为1024的字节数组

byte[] buf = new byte[1024];

// 从输入流中读出字节到定义的字节数组

int len = (buf, 0, 1024);

// 循环读入字节,然后写到文件输出流中

while (len != -1) {

(buf, 0, len);

len = (buf, 0, 1024);

}

} catch (Exception e) {

n(“出现错误!”);

} finally {

// 关闭文件

if (file != null) {

();

}

// 关闭输入流

if (sis != null) {

();

}

}

上面是通过输入流来读取的接收内容,这一种方法基本是通用的,因为在文件传输的过

程中本身是以流的形式过来的,但是如果你知道对方就是通过字符串的形式写入的,那么完

全可以通过用字符读取的方式去读取。

B、通过字符读取

// 定义一个可访问的文件对象

RandomAccessFile file = null;

// 读出输入流

BufferedReader br = null;

String strFileName = "";

try {

// 把文件定义成可读写的

file = new RandomAccessFile(strFileName, "rw");

String line;

br = der();

while ((line = ne()) != null) {

line += " ";

((new String(es("ISO-8859-1"), "gb2312"))

.getBytes());

}

} catch (Exception e) {

n(“出现错误!”);

} finally {

// 关闭文件

if (file != null)

();

// 关闭输入流

if (br != null)

();

}