Java发送form-data请求

这篇具有很好参考价值的文章主要介绍了Java发送form-data请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Java中发送form-data请求,可以使用Apache HttpClient或OkHttp这样的HTTP客户端库来发送请求。

一、HttpClient

1.添加依赖

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

2.代码

package request;
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.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

import java.io.File;
import java.io.IOException;

public class FormDataExample {
    public static void main(String[] args) throws IOException {
        String  url = "http://127.0.0.1:3000/aaa/fileUpload.jsp";
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addTextBody("text2", "value1");
        builder.addTextBody("text3", "value2");
        builder.addBinaryBody("file1", new File("D:\\fanwei\\学习\\工具地址.txt"), ContentType.APPLICATION_OCTET_STREAM, "filename2.txt");

        String StringResult = sendPostFormData(url, builder);

        System.out.println(StringResult);
    }


    /**
     * @param url 请求地址
     * @param builder
     * @return
     */
    public static String  sendPostFormData(String url, MultipartEntityBuilder builder){
        String StringResult = "";
        //不需要手动关闭httpClient
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpPost httpPost = new HttpPost(url);

        // 构建form-data请求体
        HttpEntity entity = builder.build();
        httpPost.setEntity(entity);

        // 发送请求并获取响应
        HttpResponse response = null;
        try {
            response = httpClient.execute(httpPost);
            HttpEntity responseEntity = response.getEntity();
            StringResult = EntityUtils.toString(responseEntity);
        } catch (IOException e) {
            StringResult = "errorException:" + e.getMessage();
            e.printStackTrace();
        }
        return StringResult;
    }
}

对于HttpClient对象,HttpClientBuilder.create().build()创建的实例是不需要手动关闭的。

在使用HttpClientBuilder创建HttpClient对象时,不需要手动关闭HttpClient对象。这是因为HttpClientBuilder在创建HttpClient对象时,会自动管理底层的连接池和资源释放。

HttpClientBuilder会创建一个CloseableHttpClient的实例,它实现了Closeable接口,可以自动关闭相关资源。当不再需要使用HttpClient时,可以让垃圾回收器自动回收HttpClient对象,并自动关闭底层的连接池和资源。

需要注意的是,如果使用了连接池,关闭HttpClient并不会立即关闭底层的连接池,而是将连接返回给连接池以供重用。连接池会根据一定的策略来管理连接的生命周期。因此,关闭HttpClient并不会立即关闭与服务器的连接,而是将连接返回给连接池以供下次使用。

总结起来,使用HttpClientBuilder创建的HttpClient对象不需要手动关闭,它会自动管理底层的连接池和资源释放。当不再需要使用HttpClient时,可以让垃圾回收器自动回收HttpClient对象。

二、OkHttp

1.添加依赖

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

2.代码

package request;

import okhttp3.*;

import java.io.File;
import java.io.IOException;

public class FormDataExample2 {
    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();

        // 构建form-data请求体
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("field1", "value1")
                .addFormDataPart("field2", "value2")
                .addFormDataPart("file", "filename.txt",
                        RequestBody.create(MediaType.parse("application/octet-stream"), new File("D:\\fanwei\\学习\\工具地址.txt")))
                .build();

        // 构建请求
        Request request = new Request.Builder()
                .url("http://127.0.0.1:3000/aaa/fileUpload.jsp")
                .post(requestBody)
                .build();

        // 发送请求并获取响应
        try (Response response = client.newCall(request).execute()) {
            String responseBody = response.body().string();
            // 处理响应
            System.out.println(responseBody);
        }
    }
}

其他发送请求,请参阅

httpclient 发送请求_httpclient发请求_有梦想的菜的博客-CSDN博客

文件上传,请参阅

Java文件上传_java上传文件_有梦想的菜的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-695727.html

到了这里,关于Java发送form-data请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java请求调用参数格式为form-data类型的接口

    接口参数使用postman调用如图所示,只能使用form-data格式调用 使用java代码发送http请求实现此种方式的接口调用 特别说明:form的Content-Type属性为编码方式 常用有两种 :application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 x-www-form-urlencoded :当action为

    2024年02月12日
    浏览(44)
  • HTTP POST请求发送form-data格式的数据

    发送请求给 第三方服务的接口 ,且请求报文格式为 multipart/form-data 的数据。支持复杂类型的参数,包含文件类型 4.1.1、 依赖包 4.1.1、 实现

    2024年02月12日
    浏览(34)
  • JAVA实现postman form-data和raw方式请求数据的代码

    java raw方式 的实现代码如下: Url url = new Url(\\\"\\\"); HttpURLConnection connection = (HttpURLConnection ) url.oepnConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); connection.setInstanceFollowRedirects(true); connection.setRequestMethod(\\\"POST\\\"); connection.setRequestProperty(\\\"Accept\\\",\\\"application/

    2023年04月08日
    浏览(31)
  • requests 库:发送 form-data 格式的 http 请求 (python)

    requests官方网站地址 requests_toolbelt Python自动化 requests 库:发送 form-data 格式的 http 请求 requests-toolbelt · PyPI

    2024年02月03日
    浏览(42)
  • 使用postman发送请求,提示Content type ‘multipart/form-data not supported

    1、原因:后端通过@RequestBody 的方式接收参数,不能通过form-data方式传参,每一个请求必须是通过实体对象进行传参,需要改为使用json传参

    2024年01月22日
    浏览(41)
  • Java实现以form-data形式文件上传到服务器

    Java实现以form-data形式文件上传到服务器

    2024年02月13日
    浏览(42)
  • Java使用HttpClient以multipart/form-data向接口上传文件

    对接某公司的接口,涉及到资质上传等业务。需要对接他们的上传附件接口。 JDK1.8 httpclient 4.x 因为我方系统需要给前端提供上传接口 使用的 MultipartFile 来接收文件 所以这边需要MultipartFile转下File文件 一顿操作对接完事。肯定有朋友问 为什么不让前端兄弟直接对接呢。因为对

    2024年02月05日
    浏览(46)
  • postman上传文件(multipart/form-data请求)

    网页的form表单中,如果存在上传文件的表单,则需要将form标签设置enctype=\\\"multipart/form-data\\\"属性,意思是将Content-Type设置成multipart/form-data。 那么如何使用 postman发送 multipart/form-data请求呢? Content-Type: multipart/form-data; boundary= 表单中的 enctype 属性规定在发送到服务器之前应该如

    2024年02月02日
    浏览(47)
  • python-用form-data形式上传文件请求

    虽然现在基本上都约定俗成的接口都用json形式请求 但是不可避免地 有些接口需要传文件流,此时就需要用form-data形式上传了 for.e: 存在以下接口,通过接口创建海报图 但需要上传缩略图, 此时接口的Content-Type就不能是application/json,而是multipart/form-data; 参数格式也是以表单

    2023年04月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包