httpclient4.3 模拟表单提交文件

翻译 2016年08月29日 16:33:44
<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.3.6</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpmime</artifactId>
			<version>4.3.6</version>
		</dependency>

package com.test;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;  
  
  
public class ClientMultipartFormPost {  
  
    /** 
     * 这个例子展示了如何执行请求包含一个多部分编码的实体 
     * 模拟表单提交 
     * @throws IOException  
     */  
    public static void main(String[] args) throws IOException {  
        CloseableHttpClient httpClient = HttpClients.createDefault();  
        try{  
            //要上传的文件的路径  
            String filePath = "/Users/jjs/Downloads/feedbak_image.jpg";  
            //把一个普通参数和文件上传给下面这个地址    是一个servlet  
            HttpPost httpPost = new HttpPost("http://localhost:8080/feedback/add");  
            //把文件转换成流对象FileBody  
            FileBody bin = new FileBody(new File(filePath));  
            //普通字段  重新设置了编码方式  
            StringBody content = new StringBody("这里是一个评论", ContentType.create("text/plain", Consts.UTF_8));  
            //StringBody comment = new StringBody("这里是一个评论", ContentType.TEXT_PLAIN);  
              
            HttpEntity reqEntity = MultipartEntityBuilder.create()  
            .addPart("media", bin)//相当于<input type="file" name="media"/>  
            .addPart("content", content)  
            .build();  
              
            httpPost.setEntity(reqEntity);  
              
            System.out.println("发起请求的页面地址 " + httpPost.getRequestLine());  
            //发起请求   并返回请求的响应  
            CloseableHttpResponse response = httpClient.execute(httpPost);  
            try {  
                System.out.println("----------------------------------------");  
                //打印响应状态  
                System.out.println(response.getStatusLine());  
                //获取响应对象  
                HttpEntity resEntity = response.getEntity();  
                if (resEntity != null) {  
                    //打印响应长度  
                    System.out.println("Response content length: " + resEntity.getContentLength());  
                    //打印响应内容  
                    System.out.println(EntityUtils.toString(resEntity,Charset.forName("UTF-8")));  
                }  
                //销毁  
                EntityUtils.consume(resEntity);  
            } finally {  
                response.close();  
            }  
        }finally{  
            httpClient.close();  
        }  
    }  
  
}  

httpclient4.3.x模拟post及get请求

在web开发中,我们经常需要模拟post及get请求,现在网上比较多的是使用httpclient3.x,然而httpclient4.x已经发布好几年了,而且4.x之后改名为HttpComponents...
  • gaolu
  • gaolu
  • 2014年07月28日 13:33
  • 1759

java文件流模拟form表单上传文件

package test; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOut...
  • zjjhns
  • zjjhns
  • 2015年06月05日 11:12
  • 1183

HttpClient4模拟带文件上传的表单提交

这里用apache的HttpClient4.3模拟文件上传,上传到一个java servlet,然后用servlet解析,把上传文件放到服务器目录下 下面这个java应用,往一个java serv...
  • ngaveup
  • ngaveup
  • 2013年11月28日 10:04
  • 9452

httpclient 4.3.5上传文件

import java.io.File; import java.io.IOException; import org.apache.http.Header; import org.apache.h...
  • proud2005
  • proud2005
  • 2014年11月03日 15:53
  • 916

js实现的模拟form提交数据

三月的最后一天,再来发篇博文,由于需要使用window.open的方式去访问URL,但是所需要传递的参数比较多,window.open默认使用的是get方式提交数据,这使开发很不爽。 在别人的指导下...
  • wojiaohuangyu
  • wojiaohuangyu
  • 2017年03月31日 09:09
  • 2992

php curl模拟form表单提交(带附件)

问题描述: 从一个站点要把一个未生成文件的简历,以附件的形式传到另一个站点,另一个站点给了一个使用demo,这个demo是一个form表单,其中还带有name/city等属性,我们的应用场景是用户点...
  • lppklm
  • lppklm
  • 2015年04月19日 09:23
  • 2403

js模拟form表单提交

var items = this.searchForm.getForm().items.items; var dataParam = this.getDailyDataParam(it...
  • styhm
  • styhm
  • 2017年03月02日 17:32
  • 954

js 模拟表单post方式提交

即使js给form对象提供了submit()方法
  • Inuyasha1121
  • Inuyasha1121
  • 2014年11月07日 10:05
  • 13748

java模拟form表单提交图片文件Posted by

转自:http://hi.baidu.com/chenmm17/item/f00428e0a128adb32e140b4f Published in computer知识, 程序开发 这次...
  • taking_wang
  • taking_wang
  • 2014年04月19日 22:43
  • 564

js 模拟form 表单提交

用户名: 提交 document.getElementById('btn').onclick=function() { if(document.forms['login'].uns...
  • u011341352
  • u011341352
  • 2015年08月05日 16:59
  • 485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:httpclient4.3 模拟表单提交文件
举报原因:
原因补充:

(最多只允许输入30个字)