由于工作需要,我需要在后台servlet模拟post向服务器发送数据,所以我用了HttpURLConnection类来实现,并且发送字符串数据已经能够实现了,但是不知道发送文件数据该如何实现。
发送数据代码如下
URL url = new URL(
"http://**********");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type","multipart/form-data; boundary=Bounday---");
connection.setRequestProperty("Cache-Control","no-cache");
java.io.OutputStream os=connection.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
//BufferedWriter bWriter = new BufferedWriter(osw);
//发送字符串数据
osw.write("字符串数据");
osw.flush();
/*发送文件数据该如何实现*/
// 接收数据
DataInputStream in = new DataInputStream(connection
.getInputStream());
byte[] bytes = new byte[2];
in.read(bytes);
//String result = new String(bytes);
BufferedReader inss = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line = null;
StringBuffer content= new StringBuffer();
while((line = inss.readLine()) != null){//line为返回值,这就可以判断是否成功、
content.append(line);
}
inss.close() ;
inss=null;
url=null;
服务器端接收数据代码如下
BufferedReader bufferdeReader = request.getReader();
StringBuffer sb1 = new StringBuffer();
String tempStr = null;
while ((tempStr = bufferdeReader.readLine()) != null) {
String s = tempStr;
sb1.append(s);
}
现在我不会的是通过HttpURLConnection发送文件的发送端代码该如何写(如要发送的文件为d:\a.jsp),接收端接收文件的代码该如何写。希望各位大哥大姐指教。或者给一个HttpURLConnection这个类的详细说明文档也行,网上找的都说得比较简单。
再问一个问题。
现在文件传输的问题解决了,但是现在有个问题是,我在发送文件的时候,如何把文件名称也发送过去,在那边如何能够获取到文件名称呢?如果都是流的形式传输的,我如何在流中区分出文件名信息和文件流信息??
分享到:
相关推荐
### 使用HttpURLConnection发送短信 在Java开发中,通过网络接口实现短信发送是一种常见的应用场景,例如在用户注册、找回密码等场景下验证用户身份时。本文将详细介绍如何利用`HttpURLConnection`来实现短信发送...
- 上传文件可能引发安全问题,如DoS攻击,因此应限制上传文件的大小和类型。 - 服务器端应该验证文件名和内容,防止注入攻击。 - 考虑使用异步处理大文件,以免阻塞服务器线程。 - 为了提高性能,可以使用缓冲...
在Java中,如果需要从网络上下载文件,`HttpURLConnection`是一个常见的选择,它提供了与HTTP服务器进行通信的能力,包括发送请求、接收响应以及读取返回的数据。在给定的代码片段中,展示了如何使用`...
- **错误处理**:在实际应用中,需要对可能出现的异常情况进行处理,比如网络问题、文件不存在、权限不足等。 - **安全性**:考虑使用HTTPS而非HTTP,以保护数据传输过程中的安全。 - **进度显示**:如果文件较大,...
在本文中,我们将深入探讨如何使用HttpURLConnection实现文件上传,同时也会涉及普通参数的传递。 首先,我们需要理解HTTP请求的基本结构。HTTP请求通常由以下几个部分组成:请求行、请求头、空行和请求体。在文件...
JAVA通过HttpURLConnection上传和下载文件的方法 JAVA通过HttpURLConnection上传和下载文件的方法是非常有实用价值的,需要的朋友可以参考下。HttpURLConnection是一个Java类,用于从网络中读取数据或向网络中写入...
java HttpURLConnection 发送文件和字符串信息 java HttpURLConnection 是一种常用的网络通信协议,它可以用于发送文件和字符串信息。下面将详细介绍 java HttpURLConnection 发送文件和字符串信息的相关知识点。 ...
### HttpUrlConnection下载文件:Java实现详解 在Java编程中,`HttpUrlConnection`是用于发送HTTP请求和接收响应的标准工具之一。它提供了一个简单而强大的API来与Web服务器进行交互,包括GET、POST等HTTP方法。...
在处理文件上传时,我们通常需要设置请求方法为POST或PUT,并使用`setDoOutput(true)`开启输出流,以便向服务器发送数据。 Servlet是Java Web开发中的重要组件,用于接收和响应HTTP请求。在处理文件上传时,Servlet...
要使用`HttpURLConnection`发送POST请求并上传文件,你需要创建一个HTTP连接,设置请求方法为POST,并设置`Content-Type`为`multipart/form-data`。然后,你需要创建一个`DataOutputStream`,通过它写入文件的各个...
在这个场景下,我们使用POST方法,因为我们需要将本地的文件或目录内容发送到远程服务器。 要实现这个功能,我们需要以下几个步骤: 1. **建立连接**:创建`URL`对象,表示本地文件或目录所在的URL,然后通过`open...
1. **使用HttpURLConnection下载文件**: - 首先,建立网络连接,通过`URL.openConnection()`创建HttpURLConnection对象。 - 设置请求方法,通常为GET或POST。 - 发送请求,并设置读取超时、连接超时等参数。 - ...
它提供了两种主要的子类:`HttpURLConnection`和`JarURLConnection`,分别用于处理HTTP协议和JAR文件URL。`HttpURLConnection`是进行HTTP请求的核心类,而`URL`类则用于构建指向特定网络资源的URL实例。 在使用`...
文件上传通常采用`POST`方法,通过`multipart/form-data`编码方式来发送数据。这种编码方式允许在请求体中包含多个部分,每个部分之间用一个特定的分隔符(即`boundary`)来区分。文件部分通常包含文件名、文件类型...
* 文件大小限制:HttpURLConnection对文件大小有一定的限制,超过限制的文件可能无法上传成功。 六、结论 本文详细介绍了Java 中HttpURLConnection附件上传的实例详解,包括HttpURLConnection简介、附件上传的基本...
要处理可能的异常,如网络问题、文件I/O问题等,确保在try-catch块中进行。 8. **关闭资源**: 下载完成后,记得关闭输入流和输出流,避免资源泄漏。 9. **示例代码**: 这是一个简单的下载图片的示例代码: `...
这个类允许我们与远程服务器进行各种HTTP通信,包括发送GET、POST请求,上传文件,以及处理响应。在远程连接服务器的过程中,`HttpURLConnection`扮演着至关重要的角色。 首先,我们要理解`HttpURLConnection`的...
默认情况下,`HttpURLConnection`没有设置超时,如果网络出现问题,程序可能会无限制地等待响应,导致程序阻塞。我们需要分别设置连接超时(connectTimeout)和读取超时(readTimeout),确保在一定时间内未得到响应...
在Android开发中,HttpURLConnection是Java标准库提供的一种网络通信方式,用于与HTTP服务器进行交互。本篇将详细讲解如何使用...在提供的压缩包文件中,可能包含了实现这些功能的示例代码,可以作为学习和参考。
在后台线程中,我们可以读取HTTPURLConnection的输入流,将图片数据缓存到内存或文件中。例如: ```java InputStream inputStream = connection.getInputStream(); byte[] imageData = readInputStream(inputStream...