zoukankan      html  css  js  c++  java
  • 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;
    }
    	
    

      

  • 相关阅读:
    VisualSVN Server 和 Subversion (都是服务器端安装)
    pl/sql导出dmp格式数据时,命令行一闪而退的问题
    Linux各种时间类型与时间函数提供技术文档
    erlang tuple的一些操作
    erlang 题目:一个integer列表,按照数字出现的次数由少到多排序,相同的数字小 的在前面
    一些erlang 题目
    各种排序
    erlang gen_tcp 详细例子
    erlang receive语句大诠释
    ets结合record的增删改查操作
  • 原文地址:https://www.cnblogs.com/foxting/p/7895724.html
Copyright © 2011-2022 走看看