在Java中發(fā)送form-data請(qǐng)求,可以使用Apache HttpClient或OkHttp這樣的HTTP客戶端庫(kù)來發(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ù)一定的策略來管理連接的生命周期。因此,關(guān)閉HttpClient并不會(huì)立即關(guān)閉與服務(wù)器的連接,而是將連接返回給連接池以供下次使用。
總結(jié)起來,使用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)求_有夢(mèng)想的菜的博客-CSDN博客
文件上傳,請(qǐng)參閱文章來源:http://www.zghlxwxcb.cn/news/detail-695727.html
Java文件上傳_java上傳文件_有夢(mèng)想的菜的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-695727.html
到了這里,關(guān)于Java發(fā)送form-data請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!