Java HttpClient 发送multipart/form-data带有Json文件的Post请求
说明:发送multipart/form-data带有Json文件的Post请求,文件内容其实就是json字符串,这种请求之前都是通过postman发的,见postman截图:
目前但是要做接口自动化测试,所以须用代码实现。
直接贴代码:
(需要至少2个jar包:httpclient-4.5.3.jar,httpmime-4.3.jar)
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
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.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class HttpMultipartFormdataDemo1 {
public static void main(String[] args) throws ClientProtocolException, IOException {
// 文件sTestsetFile:solr_etl_agent35.json是存有JSON字符串的文件
String sTestsetFile=System.getProperty("user.dir")+File.separator+"testdata"+File.separator+"solr_etl_agent35.json";
String sURL="http://172.16.101.46:14401/editorialincre";
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost(sURL);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN);
// 把文件加到HTTP的post请求中
File f = new File(sTestsetFile);
builder.addBinaryBody(
"file",
new FileInputStream(f),
ContentType.APPLICATION_OCTET_STREAM,
f.getName()
);
HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();
String sResponse=EntityUtils.toString(responseEntity, "UTF-8");
System.out.println("Post 返回结果"+sResponse);
}
}
在这做个记录,同时也能给大家参考。