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

