httpClient 使用multipart/form-data 类型上传文件及表单
2014-07-08 18:14
786 查看
public static void post() throws ClientProtocolException, IOException { // Proxy p=new Proxy(); // p.setHost("192.168.1.153"); // p.setPort("8888"); HttpClient httpclient = new DefaultHttpClient(); // HttpHost proxy = new HttpHost(p.getHost(), Integer.valueOf(p.getPort()), "http"); // httpclient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy); //请求路径 HttpPost post = new HttpPost("xxxxx"); //添加header头信息 post.setHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"); //注 这里一定不能添加 content-Type:multipart/form-data 属性 因为这里面有个boundary参数属性是不可控的。这个值是由浏览器生成的。如果强行指明和可能 //导致边界值不一致 就会请求失败 详细参见 http://blog.csdn.net/xiaojianpitt/article/details/6856536 // post.setHeader("content-Type", "multipart/form-data"); post.setHeader("Host", "****"); post.setHeader("Accept-Encoding","gzip"); post.setHeader("charset", "utf-8"); FileBody fileBody = new FileBody(new File("xxxx"),"image/pjpeg","utf-8"); MultipartEntity entity = new MultipartEntity(); //添加消息体信息 entity.addPart("xxxx", new StringBody("xxx",Charset.forName("utf-8"))); entity.addPart("imagefile", fileBody); post.setEntity(entity); HttpResponse response = httpclient.execute(post); if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){ HttpEntity entitys = response.getEntity(); if (entity != null) { System.out.println(EntityUtils.toString(entitys)); } } httpclient.getConnectionManager().shutdown(); }
如果设置了content-Type: multipart/form-data
可以使用抓包工具拦截请求
这是是缺少boundary参数的
正常的应该是存在的(边界值不一样就会导致content-length=0 就是发送的消息体是空的)
相关文章推荐
- httpClient 使用multipart/form-data 类型上传文件及表单
- HttpClient 4.3.6 使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- 实现使用HTTP协议发送multipart/form-data类型的HTTP表单
- WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
- ajax上传文件,提交表单,使用FormData和XMLHttpRequest提交表单
- 【MIME类型简述】为什么上传文件的表单里面要加一个属性enctype=multipart/form-data?
- 实现使用HTTP协议发送multipart/form-data类型的HTTP表单
- WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
- WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
- 实现使用HTTP协议发送multipart/form-data类型的HTTP表单
- 使用httpClient MultipartRequestEntity文件上传解析文件和普通表单参数
- android向服务器上传multipart/form-data文件(upload using multipart post using httpclient in android)
- 理解HTTP消息头 (五)——使用multipart/form-data上传文件
- ajax上传文件,提交表单,使用FormData和XMLHttpRequest提交表单
- Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form me
- WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
- 上传文件form表单enctype="multipart/form-data"传值解决办法(代原代码)
- enctype="multipart/form-data"表单上传文件
- enctype="multipart/form-data"表单上传文件 (转)
- 文件上传 form 表单 enctype="multipart/form-data" 分析