Java Post请求发送form-data表单参数 【代码】Java Post请求发送form-data表单参数。

文章目录

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

一、pom文件引入依赖


 
 org.apache.httpcomponents
 httpclient
 4.5.13 
 
 
 
 org.apache.james
 apache-mime4j
 0.6.1 
 
 
 org.apache.httpcomponents
 httpmime
 4.5.13 
 

二、工具类

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.apache.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
 * @version :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(StandardCharsets.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) {
 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,
 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()));
 }
}
作者:胡德禄a原文地址:https://blog.csdn.net/weixin_45783712/article/details/144113575

%s 个评论

要回复文章请先登录注册