java使用HttpClient上传文件
时间: 2023-10-14 14:07:40 浏览: 198
以下是使用HttpClient上传文件的示例代码:
```
import java.io.File;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
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;
public class FileUploader {
public static void main(String[] args) {
String url = "http://example.com/upload";
String filePath = "/path/to/file.txt";
// 创建HttpClient
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建HttpPost请求
HttpPost httpPost = new HttpPost(url);
// 创建multipart/form-data实体
File file = new File(filePath);
HttpEntity httpEntity = MultipartEntityBuilder.create()
.addBinaryBody("file", file, ContentType.DEFAULT_BINARY, file.getName())
.build();
// 设置请求实体
httpPost.setEntity(httpEntity);
try {
// 执行请求
HttpResponse response = httpClient.execute(httpPost);
// 输出响应结果
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(response.getEntity().getContent().toString());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭HttpClient
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在上面的示例代码中,我们使用了Apache HttpClient 4.x库来发送POST请求,并上传文件。我们首先创建了一个CloseableHttpClient实例,然后创建一个HttpPost实例,并设置请求实体为multipart/form-data类型的实体。
在实体中,我们添加了一个二进制文件体,它将文件添加到请求中。在这个例子中,我们使用了File类来表示文件,并用ContentType.DEFAULT_BINARY创建了一个ContentType实例。
最后,我们执行请求,并输出响应结果。注意,在使用HttpClient时,我们需要手动关闭HttpClient实例,以释放连接和资源。
阅读全文