java http请求模拟FormData表单提交File和参数

直接上代码,如下:

public static String doPostForFromData(String uriAPI, JSONObject jsonHeads, File localFile) {
        logger.info("-----doPostForFromData--------------jsonHeads:" + jsonHeads);
        String result = "";
        try {
            HttpPost httpRequst = new HttpPost(uriAPI);
            if (null != jsonHeads) {
                Iterator headsKeys = jsonHeads.keys();
                while(headsKeys.hasNext()) {
                    String key = headsKeys.next().toString();
                    String value = jsonHeads.getString(key);
                    httpRequst.addHeader(key, value);
                }
            }

            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            FileBody file = new FileBody(localFile);
            builder.addPart("file", file);
            HttpEntity entity = builder.build();
            httpRequst.setEntity(entity);

            HttpResponse httpResponse = HttpClients.createDefault().execute(httpRequst);

            if (httpResponse.getStatusLine().getStatusCode() == 200) {
                HttpEntity httpEntity = httpResponse.getEntity();
                result = EntityUtils.toString(httpEntity);
                logger.info("-----doPostForFromData--------------result:" + result);
            } else if (httpResponse.getStatusLine().getStatusCode() == 400) {
                logger.info("-----doPostForFromData--------------result:400:请求参数有误");
            }
        } catch (Exception e) {
            logger.error("-----doPostForFromData--------------error:" + e);
            result = e.getMessage();
        }
        return result;
    }

所需依赖:

<dependency>
	  <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.6</version>
</dependency>

如有问题可私聊留言哦!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
使用Java发送HTTP FormData请求可以使用JavaHttpURLConnection类。以下是示例代码: ```java import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.UUID; public class FormDataHttpRequest { private static final String LINE_FEED = "\r\n"; private static final String BOUNDARY = UUID.randomUUID().toString(); public static void main(String[] args) throws IOException { String url = "http://example.com/upload"; String charset = "UTF-8"; File textFile = new File("text.txt"); File binaryFile = new File("image.png"); HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); try (OutputStream outputStream = connection.getOutputStream(); PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), true)) { // Add text field writer.append("--").append(BOUNDARY).append(LINE_FEED); writer.append("Content-Disposition: form-data; name=\"text\"").append(LINE_FEED); writer.append("Content-Type: text/plain; charset=").append(charset).append(LINE_FEED); writer.append(LINE_FEED); writer.append("Text field value").append(LINE_FEED); writer.flush(); // Add binary file writer.append("--").append(BOUNDARY).append(LINE_FEED); writer.append("Content-Disposition: form-data; name=\"binaryFile\"; filename=\"") .append(binaryFile.getName()).append("\"").append(LINE_FEED); writer.append("Content-Type: ").append(connection.guessContentTypeFromName(binaryFile.getName())) .append(LINE_FEED); writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED); writer.append(LINE_FEED); writer.flush(); Files.copy(binaryFile.toPath(), outputStream); outputStream.flush(); // End boundary writer.append(LINE_FEED).append("--").append(BOUNDARY).append("--").append(LINE_FEED); writer.flush(); } // Handle response int responseCode = connection.getResponseCode(); if (responseCode >= 200 && responseCode < 300) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } } else { System.out.println("Request failed with response code " + responseCode); } } } ``` 此代码将发送一个HTTP POST请求,其中包含一个文本字段和一个二进制文件。您可以根据需要添加或删除字段。注意,此代码将使用Java 7的Files.copy()方法复制二进制文件。如果您使用的是Java 6或更早版本,请使用其他方法复制文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杭小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值