我們在前文中已經介紹了SpringAOP的切麵實現和創建動態代理的過程,那麼動態代理是如何工作的呢?本文主要介紹Cglib動態代理的案例和SpringAOP實現的原理。@pdai Spring框架系列(11) - Spring AOP實現原理詳解之Cglib代理實現 引入 動態代理要解決什麼問題? ...
轉自:
http://www.java265.com/JavaCourse/202205/3307.html
HttpClient:
HttpClient 是Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議
HTTP 協議是 Internet 上使用得最多、最重要的協議之一,越來越多的 Java 應用程式需要直接通過 HTTP 協議來訪問網路資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程式來說,JDK 庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。HttpClient 已經應用在很多的項目中,比如 Apache Jakarta 上很著名的另外兩個開源項目 Cactus 和 HTMLUnit 都使用了 HttpClient。Commons HttpClient項目現已終止,不再開發。 它已被Apache HttpComponents項目里的HttpClient和HttpCore模塊取代,它們提供了更好的性能和更大的靈活性。
HttpClient 主要功能:
(1)實現了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自動轉向
(3)支持 HTTPS 協議
(4)支持代理伺服器
下文筆者講述第一個HttpClient程式的開發示例分享,如下所示:
實現思路: 1.創建一個HttpClient 2.定義一個httpRequest 3.HttpClient.execute(request) 4.獲取httpClient運行後的結果
例:
使用HttpClient編寫的第一個文件下載程式
package com.java265.other.httpClient; import java.io.ByteArrayOutputStream; import java.io.InputStream; import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.HttpEntity; public class HttpClient01 { /* * java265.com 第一個HttpClient示例 */ public static void main(String[] args) throws Exception { try (CloseableHttpClient httpclient = HttpClients.createDefault()) { HttpGet httpGet = new HttpGet("http://www.java265.com"); InputStream in = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); try (CloseableHttpResponse response1 = httpclient.execute(httpGet)) { System.out.println(response1.getCode() + " " + response1.getReasonPhrase()); HttpEntity entity1 = response1.getEntity(); in = entity1.getContent(); byte[] buffer = new byte[1024]; int len = -1; while ((len = in.read(buffer)) != -1) { bos.write(buffer, 0, len); } System.out.println("output:" + bos.toString()); }catch(Exception e) { System.out.println("message:" + e.getMessage()); }finally { if(null != in) { in.close(); } if(null != bos) { bos.close(); } } } } }