我正在尝试使用零复制帖子将图像文件上传到网络存储服务器。
实现来自example在 Apache 网站上。我更改了示例中的一些部分,以便不会将响应下载到文件中。
这是我更改的源代码。
private void upload() throws Exception {
CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault();
try {
httpclient.start();
File upload = new File("C:\\Users\\Jee\\profile.png");
ZeroCopyPost httpost = new ZeroCopyPost(requestURL+upload.getName(), upload,
ContentType.create("image/png"));
HttpAsyncResponseConsumer consumer = new BasicAsyncResponseConsumer();
Future<File> future = httpclient.execute(httpost, consumer, null);
File result = future.get();
System.out.println("Response file length: " + result.length());
System.out.println("Shutting down");
} finally {
httpclient.close();
}
System.out.println("Done");
}
我需要向此 POST 请求添加 header 。它是如何完成的?
最佳答案
ZeroCopyPost zeroCopyPost = new ZeroCopyPost(
URI.create("/"),
new File("stuff"),
ContentType.DEFAULT_BINARY) {
@Override
protected HttpEntityEnclosingRequest createRequest(
final URI requestURI, final HttpEntity entity) {
HttpEntityEnclosingRequest request = super.createRequest(requestURI, entity);
request.setHeader("my-header", "whatever");
return request;
}
};
重写 ZeroCopyPost#createRequest 是推荐的方法。根据 @Robert Rowntree 的建议覆盖 #generateRequest 也可以。
关于java - 如何向 ZeroCopyPost 添加 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442758/