4.3憑據我一直有在看的摘要式身份驗證例如:Apache的HTTP客戶端每次請求
http://hc.apache.org/httpcomponents-client-4.3.x/examples.html
在我的方案中有多個線程發出HTTP請求,他們每個人都有要使用他們自己的憑據進行身份驗證。另外,請考慮這個問題對於Apache HTTP客戶端4.3以後可能非常具體,4.2可能以不同的方式處理認證,雖然我沒有自己檢查。這就是說,真的有問題。
我想只使用一個客戶端實例(該類的靜態成員,即線程安全)併爲其提供連接管理器以支持多個併發請求。重點是每個請求都會提供不同的憑證,而且我沒有看到爲每個請求分配憑證的方式,因爲在構建http客戶端時設置了憑證提供程序。從上面的鏈接:
[...]
HttpHost targetHost = new HttpHost("localhost", 80, "http");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials("username", "password"));
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider).build();
[...]
檢查:
http://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html#d5e600
在點4.4的代碼示例(尋道4.4。HTTP身份驗證和執行上下文)似乎認爲HttpClientContext被授予auth緩存和credentinti als提供程序,然後傳遞給HTTP請求。在它旁邊執行請求,看起來客戶端將在HTTP請求中獲取由主機進行的憑據過濾。換句話說:如果上下文(或緩存)具有當前HTTP請求的目標主機的有效憑證,他將使用它們。對我來說,問題是不同的線程會對同一個主機執行不同的請求。
有什麼辦法可以爲每個HTTP請求提供自定義憑據嗎?
在此先感謝您的時間! :)
可能重複[使用httpclient 4.x驗證單個請求](http://stackoverflow.com/questions/2516345/authenticating-a-single-request-with-httpclient-4x) – davidwebster48