zoukankan      html  css  js  c++  java
  • Java使用HttpClient上传文件

    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 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:
    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请求
    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; }    分类: JAVA
  • 相关阅读:
    【Django总结】详解Django admin高级用法
    【Django总结】Django model中的class Meta详解
    【Django总结】django中的objects.get和objects.filter方法的区别
    【Django总结】Django的时间字段DateTimeField
    【Django总结】Django数据模型的一些字段解析
    codechef Chef and Chefcoin
    codechef Hikaru, Touya and Waya
    [CmdOI2019]口头禅
    Codeforces Round #664 (Div. 1)(E未做)
    AtCoder Grand Contest 034
  • 原文地址:https://www.cnblogs.com/xiaolei2017/p/9125741.html
Copyright © 2011-2022 走看看