`
willvvv
  • 浏览: 334188 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

四、使用HttpClient上传测试文件服务器

阅读更多

直接上代码吧!

package cn.java.basic.upload;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;

public class HttpUpload {
	private static final String UPLOADURL = "http://192.168.0.181:8099/upload";
	private static final String KEY_USERNAME = "username";
	private static final String KEY_MD5ORSHA1 = "md5orsha1";
	private static final String KEY_FILE = "myfile";

	private String username;
	private String md5orsha1;
	private String filePath;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getMd5orsha1() {
		return md5orsha1;
	}

	public void setMd5orsha1(String md5orsha1) {
		this.md5orsha1 = md5orsha1;
	}

	public String getFilePath() {
		return filePath;
	}

	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}

	public HttpUpload(String username, String md5orsha1, String filePath) {
		super();
		this.username = username;
		this.md5orsha1 = md5orsha1;
		this.filePath = filePath;
	}

	public String postFile() throws ClientProtocolException, IOException {
		FileBody fileBody = null;
		HttpClient httpclient = new DefaultHttpClient();
		HttpPost httppost = new HttpPost(UPLOADURL);
		File file = new File(filePath);
		if (file != null) {
			fileBody = new FileBody(file);
		}
		StringBody usernameStringBody = new StringBody(username);
		StringBody md5orsha1StringBody = new StringBody(md5orsha1);
		MultipartEntity reqEntity = new MultipartEntity();
		reqEntity.addPart(KEY_USERNAME, usernameStringBody);
		reqEntity.addPart(KEY_MD5ORSHA1, md5orsha1StringBody);
		reqEntity.addPart(KEY_FILE, fileBody);
		httppost.setEntity(reqEntity);
		System.out.println("执行: " + httppost.getRequestLine());
		HttpResponse response = httpclient.execute(httppost);
		System.out.println("statusCode is "
				+ response.getStatusLine().getStatusCode());
		HttpEntity resEntity = response.getEntity();
		System.out.println("----------------------------------------");
		System.out.println(response.getStatusLine());
		if (resEntity != null) {
			System.out.println("返回长度: " + resEntity.getContentLength());
			System.out.println("返回类型: " + resEntity.getContentType());
			InputStream in = resEntity.getContent();
			String returnValue = inputStream2String(in);
			System.out.println("returnValue:" + returnValue);
			return returnValue;
		}
		if (resEntity != null) {
			resEntity.consumeContent();
		}
		return null;
	}

	public static String inputStream2String(InputStream in) throws IOException {
		StringBuffer out = new StringBuffer();
		byte[] b = new byte[4096];
		for (int n; (n = in.read(b)) != -1;) {
			out.append(new String(b, 0, n));
		}
		return out.toString();
	}

	public static void main(String[] args) throws ClientProtocolException,
			IOException {
		String username = "10000";
		String md5orsha1 = "11111111111111111111111111111112";
		String filePath = "e:\\b.jpg";
		HttpUpload hu = new HttpUpload(username, md5orsha1, filePath);
		System.out.println(hu.postFile());
	}
}

 

 

输出结果:


 

使用返回的地址去访问图片


工程需要如下包:

 


附上jar包吧!

  • 大小: 3.8 KB
  • 大小: 60.4 KB
  • 大小: 2.2 KB
  • lib.rar (610.9 KB)
  • 下载次数: 84
分享到:
评论

相关推荐

    struts2 android httpclient 上传文件

    在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`StringBody`表示其他参数。最后,将...

    httpClient测试工具

    HttpClient还支持多部分文件上传,这对于测试涉及文件上传的接口非常有用。通过使用MultipartEntityBuilder,可以添加多个Part,每个Part可以是文件或普通数据。 在发送请求后,HttpClient会返回一个HttpResponse...

    Httpclient+testng接口测试小例子

    5. **执行请求**:使用HttpClient的`execute`方法发送请求,并获取`HttpResponse`对象,其中包含了服务器的响应。 6. **处理响应**:从`HttpResponse`中提取响应码、响应体等信息。可以使用`getStatusLine`获取状态...

    使用HttpUrlConnection实现上传文件 服务器端代码

    本篇文章将详细讲解如何使用`HttpURLConnection`实现文件上传,同时涉及到服务器端处理上传文件的代码。我们将讨论以下核心知识点: 1. **HttpURLConnection介绍**: `HttpURLConnection`是Java标准库中的类,它是...

    httpclient httpclient.jar

    `httpclient.jar`文件是HttpClient库的二进制形式,包含所有必要的类和资源,可以直接引入到Java项目中使用,无需构建过程。将这个JAR添加到项目的类路径后,就可以开始编写HTTP客户端代码了。 实战示例: ```java...

    Java HttpClient 全部的jar包

    总结起来,这些jar包共同构成了一个完整的Java HttpClient环境,能够处理各种复杂的HTTP通信任务,从简单的GET和POST请求到复杂的文件上传、多部分表单数据处理,以及与Web服务器的高级交互。开发者可以根据项目需求...

    java,HttpClient模拟上传,绕过SSL认证

    在某些场景下,比如开发测试或调试时,我们可能需要模拟上传文件到HTTPS服务器,而这个过程可能会遇到SSL(Secure Sockets Layer)认证的问题。SSL认证是网络安全的一种机制,用于验证服务器的身份,防止中间人攻击...

    上传文件到alfresco服务器

    综上所述,通过理解Alfresco的工作原理,掌握HttpClient的使用方法,以及熟悉Alfresco的Web Script机制,我们可以实现将本地文件上传到Alfresco服务器的功能。在这个过程中,文件上传是通过HTTP POST请求完成的,...

    HttpClient所需JAR包

    4. **httpmime-4.5.3.jar**: 这个库扩展了HttpClient的功能,支持MIME类型的数据发送,例如上传文件或发送带有复杂格式的POST请求。使用HttpMultipartEntity或MultipartEntityBuilder可以方便地处理多媒体内容。 5....

    httpclient4.0

    - 文件下载/上传:通过 POST 或 GET 方式进行大文件传输。 - 爬虫开发:爬取网页数据,进行数据分析。 - 自动化测试:模拟用户行为,测试 Web 应用功能。 总结,HttpClient 4.0 作为 Java 中的网络通信库,其强大的...

    httpclient

    在描述中提到的博客链接指向了一个详细的教程,该教程可能详细解释了如何使用HttpClient库来上传一个JAR文件。通常,这个过程涉及到以下几个步骤: 1. **创建HttpClient实例**:首先,我们需要创建一个HttpClient...

    org.apache.commons.httpclient-3.1.jar

    在使用Apache Commons HttpClient 3.1时,我们通常会遇到的文件有: - `commons-httpclient-3.1.jar`:这是HttpClient的主要库文件,包含了所有必要的类和方法。 - `RELEASE_NOTES.txt`:记录了该版本的发布说明,...

    httpclient客户端jar.rar

    HTTPClient是Java编程语言中广泛使用的HTTP客户端库,主要用于与HTTP服务器进行通信。这个压缩包文件包含三个重要的组件,它们是: 1. **httpclient-4.3.3.jar**:这是Apache HttpClient库的主要实现,版本4.3.3。...

    android客户端向java服务器端上传文件(完整版)

    这涉及到创建`MultiPartEntity`(如果使用Apache HttpClient)或`RequestBody`(如果使用OkHttp),设置合适的边界,并添加文件作为请求体的一部分。 5. **服务器端处理**:Java服务器端需要解析接收到的`multipart...

    javaFastDFS上传文件测试类

    在给定的"javaFastDFS上传文件测试类"中,我们可以看到一个名为`TestFastDFS`的公共类,这个类是用于测试FastDFS文件上传功能的。在Java编程中,测试类通常包含一系列的JUnit测试方法,用于验证代码的正确性。`...

    HttpClient_学习整理.

    下面是一个简单的示例代码,用于演示如何使用HttpClient获取网页内容: ```java package http.demo; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod;...

    commons-httpclient.zip

    这个库在早期的 Java 开发中非常流行,特别是在需要与 Web 服务器进行复杂交互或者实现自动化测试时。"commons-httpclient.zip" 文件很可能是 Apache Commons HttpClient 库的源代码或二进制包的压缩形式。 Apache ...

    java动态提交网站httpclient

    例如,使用`CookieStore`管理cookies,使用`RedirectStrategy`处理重定向,使用`MultipartEntityBuilder`处理文件上传等。 在实际开发中,建议使用HttpComponents Client的最新稳定版本,以获得最新的性能优化和...

    Http或HttpClient访问网路数据

    HttpClient允许开发者创建自定义的HTTP请求,并能处理复杂的网络交互,比如上传文件、处理cookies、处理重定向等。 使用HttpClient访问网络数据的基本步骤如下: 1. **创建HttpClient实例**:首先,需要创建一个...

Global site tag (gtag.js) - Google Analytics