`

HttpClient 模仿表单上传文件

 
阅读更多
package compile5;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

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;

/**
* @Description: 模仿表单上传文件  ,将本地文件上传到文件服务器上 
*
 */
public class SendFile {

	public static void main(String[] args) throws ClientProtocolException,
			IOException {
		

        String filepath="D:\\11111.rar";  

        //创建加密上传的参数 
		Date dateNow = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String time = sdf.format(dateNow);
		StringBuffer key1 = new StringBuffer();
		
		key1.append("123456").append("PRIVATEM").append(time);
		String myCode = MD5.Md5(key1.toString(), 16);
		
   	 	//接收文件的地址
        String urlStr = "http://img.baidu.com/file/receiveFile.jsp";  
        //封装需要上传文件的参数
        Map<String, String> textMap = new HashMap<String, String>();  
        textMap.put("origin", "PRIVATE");  
        textMap.put("time",  time );  
        textMap.put("secure",myCode); 
        
        
		HttpClient httpclient = new DefaultHttpClient();
		//请求处理页面
		HttpPost httppost = new HttpPost( urlStr );
		//创建待处理的文件
		FileBody file = new FileBody(new File(filepath));

		
		//对请求的表单域进行填充
		MultipartEntity reqEntity = new MultipartEntity();
		reqEntity.addPart("file", file);

		if(textMap!=null ){
			Iterator it = textMap.entrySet().iterator();
			while(it.hasNext() ){
				 Map.Entry entry = (Map.Entry)it.next(); 
				String key =  (String) entry.getKey();
				String value = (String)entry.getValue();
				//创建待处理的表单域内容文本
				StringBody bodyValue = new StringBody(value);
				reqEntity.addPart(key , bodyValue);
			}
		}
		
		//设置请求
		httppost.setEntity(reqEntity);
		//执行
		HttpResponse response = httpclient.execute(httppost);

		HttpEntity httpEntity = response.getEntity();
		BufferedReader br = new BufferedReader(new InputStreamReader(httpEntity
				.getContent(), "UTF-8"));
		StringBuffer backData = new StringBuffer();
		String line = null;
		while ((line = br.readLine()) != null) {
			backData.append(line);
		}
		System.out.println(backData.toString()   );
		
 
	}
}

 

分享到:
评论

相关推荐

    HttpClient 4文件上传

    在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了多种功能来简化HTTP客户端开发过程。本文档将详细介绍...

    HttpClient 4 - 文件上传

    HttpClient 4 版本引入了许多改进,使得文件上传变得更加简单和高效。在这个主题中,我们将深入探讨HttpClient 4如何实现文件上传,以及相关的核心概念和技术。 首先,我们需要了解HttpClient 4的基本用法。...

    httpclient和RestfuL风格上传下载文件

    在Java开发中,HTTPClient和RESTful风格的接口被广泛用于实现文件的上传与下载功能。HTTPClient是一个强大的HTTP客户端库,而RESTful是一种轻量级的、基于HTTP协议的软件架构风格,常用于构建Web服务。在分布式系统...

    HttpClient 文件上传

    这个实体包含了表单数据和要上传的文件内容。 2. **HttpPost**: 创建一个HttpPost对象,并设置目标URL,这将用于向服务器发送POST请求。在HTTP协议中,POST请求常用于上传数据。 3. **EntityEnclosingRequest**: ...

    httpclient 文件上传 下载

    HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`FileEntity`对象,指定要上传的文件路径,然后将其添加到`...

    httpclient 上传文件

    在本篇中,我们将深入探讨如何利用Apache Commons HTTPClient库来上传文件,以及与之相关的知识点。 首先,`commons-httpclient-3.1.jar`是Apache Commons HTTPClient的版本3.1,这是一个早期但仍然被许多项目使用...

    HttpClient PostMethod 上传文件

    在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...

    httpClient上传文件

    在这个场景中,我们关注的是如何使用HttpClient来上传文件到服务器。Apache HttpClient支持POST请求,特别是Multipart/form-data类型的POST,这是上传文件的标准格式。以下是关于这个主题的详细讲解: 1. **...

    httpClient文件上传

    使用httpclient上传文件, CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    HttpClient上传文件需要的Jar包

    在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...

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

    本篇文章将详细讲解如何利用HttpClient上传文件到测试服务器,这在进行API测试、自动化测试或者集成测试时非常有用。我们先来理解一下HttpClient的基本概念,然后逐步探讨文件上传的步骤。 HttpClient是由Apache...

    使用HttpClient实现文件的上传所需lib

    它允许我们将文件作为多部分/form-data类型的数据发送,这是HTTP协议中用于上传文件的标准格式。 3. **文件上传步骤**: - **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,它是...

    httpclient上传文件

    用httpcient上传文件,用httpclient上传文件

    HttpClient上传文件 Servlet 处理文件上传

    HttpClient 上传文件 Servlet 处理文件上传 commons-fileupload 处理文件上传 commons-fileupload 处理文件上传,在struts中可以不用对应actionform,在jsp,servelet中应用都很方便

    java使用HttpClient通过url下载文件到本地

    在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...

    Android实现表单上传文件

    在Android开发中,当涉及到与服务器进行数据交互,特别是上传文件时,如用户注册时上传头像,我们通常会遇到一个问题:内置的`HttpURLConnection`或`HttpClient`并不直接支持表单格式的文件上传。因此,我们需要采取...

    httpclient4上传文件中文乱码问题解决办法代码示例

    服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。

    https+spring3+httpclient4多文件上传

    标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...

Global site tag (gtag.js) - Google Analytics