Java使用HttpClient上传文件

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

Maven

1

2

3

4

5

6

7

8

9

10

<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:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

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();

    }

     

}

上传代码2:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

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(); 

           

       

   }

普通POST请求

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值