Java發(fā)送form-data請(qǐng)求的實(shí)例代碼
在Java中發(fā)送form-data請(qǐng)求,可以使用Apache HttpClient或OkHttp這樣的HTTP客戶端庫(kù)來(lái)發(fā)送請(qǐng)求。
一、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\\學(xué)習(xí)\\工具地址.txt"), ContentType.APPLICATION_OCTET_STREAM, "filename2.txt");
String StringResult = sendPostFormData(url, builder);
System.out.println(StringResult);
}
/**
* @param url 請(qǐng)求地址
* @param builder
* @return
*/
public static String sendPostFormData(String url, MultipartEntityBuilder builder){
String StringResult = "";
//不需要手動(dòng)關(guān)閉httpClient
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
// 構(gòu)建form-data請(qǐng)求體
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
// 發(fā)送請(qǐng)求并獲取響應(yīng)
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;
}
}對(duì)于HttpClient對(duì)象,HttpClientBuilder.create().build()創(chuàng)建的實(shí)例是不需要手動(dòng)關(guān)閉的。
在使用HttpClientBuilder創(chuàng)建HttpClient對(duì)象時(shí),不需要手動(dòng)關(guān)閉HttpClient對(duì)象。這是因?yàn)镠ttpClientBuilder在創(chuàng)建HttpClient對(duì)象時(shí),會(huì)自動(dòng)管理底層的連接池和資源釋放。
HttpClientBuilder會(huì)創(chuàng)建一個(gè)CloseableHttpClient的實(shí)例,它實(shí)現(xiàn)了Closeable接口,可以自動(dòng)關(guān)閉相關(guān)資源。當(dāng)不再需要使用HttpClient時(shí),可以讓垃圾回收器自動(dòng)回收HttpClient對(duì)象,并自動(dòng)關(guān)閉底層的連接池和資源。
需要注意的是,如果使用了連接池,關(guān)閉HttpClient并不會(huì)立即關(guān)閉底層的連接池,而是將連接返回給連接池以供重用。連接池會(huì)根據(jù)一定的策略來(lái)管理連接的生命周期。因此,關(guān)閉HttpClient并不會(huì)立即關(guān)閉與服務(wù)器的連接,而是將連接返回給連接池以供下次使用。
總結(jié)起來(lái),使用HttpClientBuilder創(chuàng)建的HttpClient對(duì)象不需要手動(dòng)關(guān)閉,它會(huì)自動(dòng)管理底層的連接池和資源釋放。當(dāng)不再需要使用HttpClient時(shí),可以讓垃圾回收器自動(dòng)回收HttpClient對(duì)象。
二、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();
// 構(gòu)建form-data請(qǐng)求體
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\\學(xué)習(xí)\\工具地址.txt")))
.build();
// 構(gòu)建請(qǐng)求
Request request = new Request.Builder()
.url("http://127.0.0.1:3000/aaa/fileUpload.jsp")
.post(requestBody)
.build();
// 發(fā)送請(qǐng)求并獲取響應(yīng)
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
// 處理響應(yīng)
System.out.println(responseBody);
}
}
}其他發(fā)送請(qǐng)求,請(qǐng)參閱
httpclient 發(fā)送請(qǐng)求_httpclient發(fā)請(qǐng)求
文件上傳,請(qǐng)參閱
到此這篇關(guān)于Java發(fā)送form-data請(qǐng)求的文章就介紹到這了,更多相關(guān)Java發(fā)送form-data請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea2020.3配置maven環(huán)境并配置Tomcat的詳細(xì)教程
這篇文章主要介紹了idea2020.3配置maven環(huán)境并配置Tomcat的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
SpringBoot引入額外的YAML配置文件的代碼實(shí)現(xiàn)
在SpringBoot項(xiàng)目中,有時(shí)需要引入除application.yml之外的配置文件(例如在開(kāi)發(fā)公共組件時(shí)),使用@PropertySource注解可以實(shí)現(xiàn)這一需求,但有一些細(xì)節(jié)點(diǎn)需要注意,在此記錄,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-09-09
SpringCache緩存抽象之CacheManager與自定義鍵生成方式
本文將深入探討Spring Cache的核心組件CacheManager及自定義鍵生成策略,幫助開(kāi)發(fā)者掌握緩存配置與優(yōu)化技巧,從而構(gòu)建高效可靠的緩存系統(tǒng),希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
基于Spring Boot使用JpaRepository刪除數(shù)據(jù)時(shí)的注意事項(xiàng)
這篇文章主要介紹了Spring Boot使用JpaRepository刪除數(shù)據(jù)時(shí)的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot工程啟動(dòng)順序與自定義監(jiān)聽(tīng)超詳細(xì)講解
這篇文章主要介紹了SpringBoot工程啟動(dòng)順序與自定義監(jiān)聽(tīng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-11-11

