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-03SpringBoot引入額外的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-09SpringCache緩存抽象之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-06SpringBoot工程啟動(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