![](/img/trans.png)
[英]What do I need to set up for the execute() of org.apache.http.client.HttpClient to work?
[英]Do I need to do anything special to re-init org.apache.http.client.HttpClient
我有一些代碼:
public class Foo {
private HttpClient httpClient;
public Foo() {
httpClient = new DefaultHttpClient();
}
}
在與同事(經驗豐富的同事)聊天時,出現了一個擔憂,即如果我創建多個foo(),則他們的httpClient可能都受到一個httpClient動作的影響。 我們特別關注的是Cookies。
如果我有類似的代碼:
public class Bar {
public static void main(String[] args) {
Foo a = new Foo();
Foo b = new Foo();
a.executeHttpStuff();
}
}
...並且executeHttpStuff()利用httpClient,並向其中添加了cookie,這些cookie是否會出現在b上的任何調用中?
我的直覺是“不”。
我的同事的直覺是“可能”。
JavaDoc並不是很講究。
你們知道嗎?
根據以下文檔頁面:
http://hc.apache.org/httpclient-3.x/performance.html
“與諸如線程安全的連接管理器(例如MultiThreadedHttpConnectionManager)一起使用時,HttpClient是完全線程安全的”
Javadoc位於:
HttpClient不會在實例之間共享cookie(通過靜態)。 所以你的預感是對的。
您可以自己嘗試,嗅探從兩個不同客戶端實例到同一服務器的流量(例如通過tcpmon)。
答案是不。 除了您要小心並擁有一個CookieStore。 請參閱: https : //hc.apache.org/httpcomponents-client-ga/tutorial/html/statemgmt.html
玩得開心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.