Java使用HttpClient上传文件

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

maven

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.5.3</version>
</dependency>

上传代码1:

public static void upload() { 
       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(); 
           } 
       } 
   }

上传代码2:

public static void upload2() throws ClientProtocolException, 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(new InputStreamReader(responseEntity.getContent()));
        StringBuffer buffer = new StringBuffer();
        String str = "";
        while(!StringUtil.isRealEmpty(str = reader.readLine())) {
            buffer.append(str);
        }

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

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

}

普通POST请求

public String post() throws ClientProtocolException, 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<NameValuePair> params = new ArrayList<NameValuePair>();
    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;
}

原文来自:http://www.cnblogs.com/foxting/p/7895724.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值