Java 版本Client 传文件到服务器
使用httpclient
代码:
public class BytePost {
/**
* @param args
* @throws IOException
* @throws ClientProtocolException
*/
public static void main(String[] args) throws ClientProtocolException, IOException {
// Charset CharSet = "UTF-8";
HttpHost proxy = new HttpHost("127.0.0.1", 8888);
TimeUnit connTimeToLiveTimeUnit = TimeUnit.SECONDS;
String doc = null;
String UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36";
HttpClientBuilder httpClientBuilder = HttpClients.custom().setConnectionTimeToLive(2, connTimeToLiveTimeUnit);
httpClientBuilder.setUserAgent(UserAgent).setProxy(proxy);
SocketConfig socketConfig = SocketConfig.custom().setSoKeepAlive(true).setTcpNoDelay(true).build();
httpClientBuilder.setDefaultSocketConfig(socketConfig);
// 重试3次
httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true));
HttpClient httpClient = httpClientBuilder.build();
// 文件上传协议
// MultipartEntityBuilder builder = MultipartEntityBuilder.create();
// byte[] b = FileUtils.readFileToByteArray(new File("pom.xml"));
// builder.addBinaryBody("array", b);
//// builder.addBinaryBody("image", new FileInputStream(new
// File("pom.xml")));
// HttpEntity entity = builder.build();
HttpPost post = new HttpPost("http://localhost:7010/byte");
// body 传输二级制流
post.setEntity(new ByteArrayEntity(FileUtils.readFileToByteArray(new File("1.png"))));
// post.setEntity(entity);
HttpResponse response = httpClient.execute(post);
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println(responseBody);
}
}
本文介绍如何使用Java的HttpClient库将文件作为二进制流上传至服务器。通过设置代理、连接超时时间、Socket配置及重试策略,演示了完整的文件上传过程,并展示了如何读取文件内容并将其封装为请求实体。
2938

被折叠的 条评论
为什么被折叠?



