开发者

Java Post请求发送form-data表单参数详细示例代码

目录
  • Post请求发送form-data表单参数
    • 一、pom文件引入依赖
    • 二、工具类
  • 总结 

    Post请求发送form-data表单参数

    一、pom文件引入依赖

            <!-- 添加 Apache HttpClient 依赖 -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.13</version> <!-- 请使用最新的稳定版本 -->
            </dependency>
    
            <!-- 如果你需要使用 MIME 相关的实用工具,添加 mime4j 依赖 -->
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-mime4j</artifactId>
                <version>0.6.1</version> <!-- 请使用最新的稳定版本 -->
            </dependency>
    
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>4.5.13</version> <!-- 请使用最新的版本号 -->
            </dependency>
    

    二、工具类

    package com.hn.bdzzhixun.utils;
    
    import lombok.extern.slf4j.Slf4j;
    import org.apache.http.Consts;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.methods.HttpRequestBase;
    import org.aphttp://www.devze.comache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.TrustStrategy;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.mime.HttpMultipartMode;
    import org.apache.http.entity.mime.MultipartEntityBuilder;
    import org.apache.http.entity.mime.content.StringBody;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.ssl.SSLContextBuilder;
    import org.apache.http.util.EntityUtils;
    
    import Javax.net.ssl.SSLContext;
    import java.io.File;
    import java.io.IOException;
    import java.nio.charset.StandardCharsets;
    import java.util.Arrays;
    
    /**
     * @author lzn
     * @versphpion :1.0
     *  2024/11/22 15:10
     */
    @Slf4j
    public class SendFileUtils {
    
        /**
         * 使用multipart/form-data方式传输文件
         * 发送文件方法
         * @param url 接口地址
         * @param file 文件
         */
        public static String sendMultipartFile(String url, File file,String dwbh) {
            //获取HttpClient
            CloseableHttpClient client = getHttpClient();
            HttpPost httpPost = new HttpPost(url);
            fillMethod(httpPost,System.currentTimeMillis());
    
            // 请求参数配置
            RequestConfig requestConfig = RequestConfig
                    .custom()
                    .setSocketTimeout(60000)
                    .setConnectTimeout(3000)
                    .setConnectionRequestTimeout(3000)
                    .build();
            httpPost.setConfig(requestConfig);
            String res = "";
            String fileName = file.getName();//文件名
            try {
    
                MultipartEntityBuilder builder = MultipartEntityBuilder.create();
                builder.setCharset(StandjsardCharsets.UTF_8);
                builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    
                /*
                  假设有两个参数需要传输
                  参数名:filaName 值 "文件名"
                  参数名:file 值:file (该参数值为file对象)
                 */
                //表单中普通参数
                builder.addPart("filaName ",new StringBody("来源", ContentType.create("text/plain", Consts.UTF_8)));
    
                // 表单中的文件参数 注意,builder.addBinaryBody的第一个参数要写参数名
                builder.addBinaryBody("file", file, ContentType.create("multipart/form-data",Consts.UTF_8), fileName);
    
                builder.addTextBody("positionId",dwbh);
    
                HttpEntity entity = builder.build();
                httpPost.setEntity(entity);
                HttpResponse response = client.execute(httpPost);// 执行提交
    
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    // 返回响应结果
                    res = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
                }else {
                    res = "响应失败";
                    log.error("响应失败!");
                }
                return res;
    
            } catch (Exception e) {
         www.devze.com       e.printStackTrace();
                log.error("调用HttpPost失败!" + e);
            } finally {
                if (client != null) {
                    try {
                        client.close();
                    } catch (IOException e) {
                        log.error("关闭HttpPost连接失败!");
                    }
                }
            }
            log.info("数据传输成功!!!!!!!!!!!!!!!!!!!!");
            return res;
        }
    
        /**
         * 获取HttpClient
         */
        private static CloseableHttpClient getHttpClient(){
            SSLContext sslContext;
            try {
                sslContext = new SSLContextBuilder().loadTrustMaterial(null, (TrustStrategy) (arg0, arg1) -> true).build();
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
            SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext,
             yaeuVow       NoopHostnameVerifier.INSTANCE);
            return HttpClientBuilder.create().setSSLSocketFactory(sslConnectionSocketFactory).build();
        }
    
        /**
         * 添加头文件信息
         */
        private static void fillMethod(HttpRequestBase requestBase, long timestamp){
            //此处为举例,需要添加哪些头部信息自行添加即可
    
            //设置时间戳,nginx,underscores_in_headers on;放到http配置里,否则nginx会忽略包含"_"的头信息
            requestBase.addHeader("timestamp",String.valueOf(timestamp));
            System.out.println(Arrays.toString(requestBase.getAllHeaders()));
        }
    }
    
    
    

    总结 

    到此这篇关于Java Post请求发送form-data表单参数的文章就介绍到这了,更多相关Java Post请求发送form-data参数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜