AsyncHttpClient 開源框架學習研究

2022-08-03 08:24:10 字數 3916 閱讀 2275

overview:

asynchttpclient庫 基於apache的httpclient框架,是乙個非同步的httpclient, 所有的http請求都在子執行緒中,但是callback執行的執行緒和建立這個callback的執行緒是同乙個(也即主線程建立的callback那麼執行的時候也是在主線程中)

基本用法:

});專案中建議定義成靜態工具類:

使用的時候:

class twitterrestclientusage 

});}

}

儲存server端傳送的cookie

如果想加入自己的

cookie:

basicclientcookie newcookie = new basicclientcookie("cookiesare", "awesome");

newcookie.setversion(1);

newcookie.setdomain("mydomain.com");

newcookie.setpath("/");

mycookiestore.addcookie(newcookie);

帶引數的

請求:可以這樣構造引數:

requestparams params = new requestparams();

params.put("key", "value");

params.put("more", "data");

也可以構造單個引數:

requestparams params = new requestparams("single", "value");
還可以根據map構造:

hashmapparammap = new hashmap();

parammap.put("key", "value");

requestparams params = new requestparams(parammap);

使用引數上傳檔案:

1.傳入inputstream:

inputstream myinputstream = blah;

requestparams params = new requestparams();

params.put("secret_passwords", myinputstream, "passwords.txt");

2.傳入file:

file myfile = new file("/path/to/file.png");

requestparams params = new requestparams();

try catch(filenotfoundexception e) {}

3.

傳入byte陣列:

byte mybytearray = blah;

requestparams params = new requestparams();

params.put("soundtrack", new bytearrayinputstream(mybytearray), "she-wolf.***");

下載二進位制形式的資料

(如圖片

,檔案等)使用

});基本的

授權驗證:

client.get("");使用

安全連線:

方法如下:

public static sslsocketfactory createsslsocketfactory() catch (exception e) 

return sf;

}

其中mysslsocketfactory

定義

public class mysslsocketfactory extends sslsocketfactory 

public void checkservertrusted(x509certificate chain, string authtype) throws certificateexception

public x509certificate getacceptedissuers()

};sslcontext.init(null, new trustmanager , null);

}@override

public socket createsocket(socket socket, string host, int port, boolean autoclose) throws ioexception, unknownhostexception

@override

public socket createsocket() throws ioexception

private void injecthostname(socket socket, string host) catch (exception ignored)

}}

如果學習開源框架

當我們在學習乙個開源框架時,成熟的開源框架一般都會非常龐大,各個模組 包之間會有依賴關係,而如果只是修改開源包的話,始終覺得不能真正地從根本上理解 實現乙個開源框架。如果自己去模仿著寫乙個的話,也會非常痛苦,因為想實現模組a,但是寫著寫著,發現模組a依賴了太多其他模組的東西,導致無法繼續模仿下去。有...

如何學習開源框架?

前短時間被人問起 如何學習開源框架 這個問題,大家是如何學習開源框架的呢?整理了下自己的思路,僅供拍磚!1 了解 先了解該開源框架在什麼背景下誕生的,主要用來解決什麼問題。做了產品經理之後遇到啥事,我都先講背景,生怕客戶聽不懂 2 熟悉 這個開源框架的原理是什麼?比如用了什麼設計模式。比如運用了反射...

如何學習開源框架

正確的學習方法不僅能夠事半功倍,也能夠使我們更加接近真理。在大家了解了框架的本質和web開發模式之後,我們來討論一下學習開源框架和基本方法。在這裡,本書為大家小結了一些正確的學習方法和最佳實踐,這些不僅是筆者多年開發中的心得體會,也汲取了網路上的大家之言,希望對初學者或者正在為學習開源框架犯愁的朋友...