java模拟http请求上传文件,基于Apache的httpclient

1.依赖

  模拟http端的请求需要依赖Apache的httpclient,需要第三方JSON支持,项目中添加

     <dependency>
            <groupId>org.apache</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.1.2</version>
        </dependency>
<dependency>
   <groupId>org.apache</groupId>
   <artifactId>httpclient</artifactId>
   <version>4.1.2</version>
</dependency>

2.源码

import org.apache.commons.httpclient.HttpStatus;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.InputStreamBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Created by Administrator on 2016/1/19.
 */
public class FileUploadTest {

    public static String upload(String url,String filePath){
        String fdfsPath = "";
        try {
            HttpClient httpclient = new DefaultHttpClient();

//            HttpPost httppost = new HttpPost("http://127.0.0.1:8082/fileUpload.action");//请求格式
            HttpPost httppost = new HttpPost(url);
            File file = new File(filePath);
            String name = file.getName();
            InputStream in = new FileInputStream(file);
            MultipartEntity reqEntity = new MultipartEntity();
            InputStreamBody inputStreamBody = new InputStreamBody(in,name);
            StringBody fileNam = new StringBody(name);

            reqEntity.addPart("uploadFile", inputStreamBody);
            reqEntity.addPart("uploadFileName", fileNam);

            httppost.setEntity(reqEntity);
            HttpResponse response = httpclient.execute(httppost);
            int statusCode = response.getStatusLine().getStatusCode();

            if(statusCode == HttpStatus.SC_OK){

//                System.out.println("服务器正常响应.....");
                HttpEntity resEntity = response.getEntity();
                JSONObject json = new JSONObject(EntityUtils.toString(resEntity).toString());

                System.out.println(json.getString("returnResult"));
//                System.out.println(EntityUtils.toString(resEntity));//httpclient自带的工具类读取返回数据
//                System.out.println(resEntity.getContent());

                EntityUtils.consume(resEntity);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

}

3.解析

  上传参数:URL--上传的服务器端接口请求;filePath ---本地的文件或图片存储路径。

   

时间: 2024-10-12 18:58:59

java模拟http请求上传文件,基于Apache的httpclient的相关文章

SSM框架下,使用ajax请求上传文件(doc\docx\excel\图片等)

1.准备工作 1.1.添加上传必要jar包 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId>

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f

Python模拟HTTP Post上传文件

使用urllib2模块构造http post数据结构,提交有文件的表单(multipart/form-data),本示例提交的post表单带有两个参数及一张图片,代码如下: #buld post body data boundary = '----------%s' % hex(int(time.time() * 1000)) data = [] data.append('--%s' % boundary) data.append('Content-Disposition: form-data;

JAVA模拟HTTP post请求上传文件

在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也比较容易出错.今天我们就一起来学习HTTP POST的报文格式以及通过Java来模拟文件上传的请求. 首先我们来看一个POST的报文请求,然后我们再来详细的分析它. POST报文格式 [plain] view plain co

php5.6 curl 模拟表单上传文件

php5.5之后php官方推荐使用CURLFile类来模拟代替之前的@+全文件路径方式上传文件 if(class_exists('\CURLFile')) { //可以使用 $filedata = [ 'fieldname' => new \CURLFile ( realpath ( $filepath ), 'image/jpeg' ) ]; } else { //不可使用CURLFile,及旧模式 $filedata = [ 'fieldname' => '@'.realpath($fil

笔谈HTTP Multipart POST请求上传文件

公司一做iOS开发的同事用HTTP Multipart POST请求上传语音数据,但是做了两天都没搞定,项目经理找到我去帮忙弄下.以前做项目只用过get.post,对于现在这个跟服务器交互的表单请求我没有做过,但是程序员学习能力还是要有的,解决问题的方法和经验是很重要的.做过2000万用户量的业务sdk的开发,这点东西自然不在话下,优秀的程序员就是要有解决问题的能力与方法. 1) 接口地址 接口地址为:http://ip:port/upload 2) UploadRequest消息定义 Form

使用FormData进行Ajax请求上传文件到controller层的实现

需求背景: 页面上传一个文件到controller层,然后后台对文件进行处理.文件类型不限. 第一种:单纯的上传文件 页面功能展现: 第一步:首先需要两个jar commons-fileupload-1.3.2.jarcommons-io-2.4.jar 版本不限: pom文件中相应两个jar: [html] view plain copy print? <dependency> <groupId>commons-io</groupId> <artifactId&

ajax上传文件 基于jquery form表单上传文件

<script src="/static/js/jquery.js"></script><script> $("#reg-btn").click(function () { // 1. 取到用户填写的数据 var form_data_obj = new FormData(); form_data_obj.append('username',$('#id_username').val()); form_data_obj.append

Java Miniui实现批量上传文件demo 201906221520

可能需要的jar包: 需要miniui(类似easyui). Test2019062201.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "