Java使用HttpClient上傳文件

Java可使用HttpClient發送Http請求、上傳文件等,很是的方便html

Mavenjava

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

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

 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;
}
	
相關文章
相關標籤/搜索