Java使用HttpClient上传文件

Java可以使用HttpClient发送Http请求、上传文件等,非常的方便

Maven

org.apache.httpcomponents

httpclient

4.5.3

org.apache.httpcomponents

httpmime

4.5.3

上传代码1:

public static void upload2() throwsClientProtocolException, IOException{

CloseableHttpClient httpClient=HttpClientBuilder.create().build();

CloseableHttpResponse httpResponse= null;

RequestConfig requestConfig= RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000000).build();

HttpPost httpPost= new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receiveFile.html");

httpPost.setConfig(requestConfig);

MultipartEntityBuilder multipartEntityBuilder=MultipartEntityBuilder.create();//multipartEntityBuilder.setCharset(Charset.forName("UTF-8"));//File file = new File("F:\\Ken\\1.PNG");//FileBody bin = new FileBody(file);

File file= new File("F:\\Ken\\abc.pdf");//multipartEntityBuilder.addBinaryBody("file", file,ContentType.create("image/png"),"abc.pdf");//当设置了setSocketTimeout参数后,以下代码上传PDF不能成功,将setSocketTimeout参数去掉后此可以上传成功。上传图片则没有个限制//multipartEntityBuilder.addBinaryBody("file",file,ContentType.create("application/octet-stream"),"abd.pdf");

multipartEntityBuilder.addBinaryBody("file",file);//multipartEntityBuilder.addPart("comment", new StringBody("This is comment", ContentType.TEXT_PLAIN));

multipartEntityBuilder.addTextBody("comment", "this is comment");

HttpEntity httpEntity=multipartEntityBuilder.build();

httpPost.setEntity(httpEntity);

httpResponse=httpClient.execute(httpPost);

HttpEntity responseEntity=httpResponse.getEntity();int statusCode=httpResponse.getStatusLine().getStatusCode();if(statusCode == 200){

BufferedReader reader= new BufferedReader(newInputStreamReader(responseEntity.getContent()));

StringBuffer buffer= newStringBuffer();

String str= "";while(!StringUtil.isRealEmpty(str =reader.readLine())) {

buffer.append(str);

}

System.out.println(buffer.toString());

}

httpClient.close();if(httpResponse!=null){

httpResponse.close();

}

}

上传代码2:

public static voidupload() {

CloseableHttpClient httpclient=HttpClients.createDefault();//CloseableHttpClient httpclient = HttpClientBuilder.create().build();

try{

HttpPost httppost= new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receiveFile.html");

RequestConfig requestConfig= RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000).build();

httppost.setConfig(requestConfig);

FileBody bin= new FileBody(new File("F:\\Ken\\abc.pdf"));

StringBody comment= new StringBody("This is comment", ContentType.TEXT_PLAIN);

HttpEntity reqEntity= MultipartEntityBuilder.create().addPart("file", bin).addPart("comment", comment).build();

httppost.setEntity(reqEntity);

System.out.println("executing request " +httppost.getRequestLine());

CloseableHttpResponse response=httpclient.execute(httppost);try{

System.out.println(response.getStatusLine());

HttpEntity resEntity=response.getEntity();if (resEntity != null) {

String responseEntityStr=EntityUtils.toString(response.getEntity());

System.out.println(responseEntityStr);

System.out.println("Response content length: " +resEntity.getContentLength());

}

EntityUtils.consume(resEntity);

}finally{

response.close();

}

}catch(ClientProtocolException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{try{

httpclient.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

普通POST请求

public String post() throwsClientProtocolException, IOException{

CloseableHttpClient httpClient=HttpClientBuilder.create().build();

CloseableHttpResponse httpResponse= null;

HttpPost httpPost= new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receivePost.html");

RequestConfig requestConfig= RequestConfig.custom().setConnectTimeout(20000).setSocketTimeout(22000).build();

httpPost.setConfig(requestConfig);

List params = new ArrayList();

params.add(new BasicNameValuePair("user.loginId", "Lin"));

params.add(new BasicNameValuePair("user.employeeName","令狐冲"));

UrlEncodedFormEntity entity= new UrlEncodedFormEntity(params,Charset.forName("UTF-8"));

httpPost.setEntity(entity);

httpResponse=httpClient.execute(httpPost);

HttpEntity responseEntity=httpResponse.getEntity();if(responseEntity!=null){

String content= EntityUtils.toString(responseEntity,"UTF-8");

System.out.println(content);

}if(httpResponse!=null){

httpResponse.close();

}if(httpClient!=null){

httpClient.close();

}return null;

}

分类: JAVA

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐