2016-12-02 46 views
1

我有一個soap端點,用戶名和密碼。
用戶= 「組織API/uAPI529457959-e784379」
密碼= 「T61/B = 09 {V」在URL中傳遞用戶和密碼時無法使用基本身份驗證

HttpClient的進口

import org.apache.commons.codec.binary.Base64; 
import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; 
import org.apache.commons.httpclient.methods.PostMethod; 
import org.apache.commons.httpclient.methods.StringRequestEntity; 
import org.apache.commons.httpclient.params.HttpConnectionManagerParams; 

我在請求頭中使用基本認證

String userPassword = user + ":" + password; 
setRequestHeader("Authorization", "Basic " + new String(Base64.encodeBase64(userPassword.getBytes()))); 

它工作正常。

但是,當我試圖在end-pont url中傳遞用戶名和密碼時。 http://user:[email protected]

它給出以下日誌。

2016年12月2日下午12時51分44秒 org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme信息:選擇12月2基本的認證方案, 2016下午12時51分44秒org.apache .commons.httpclient.HttpMethodDirector processWWWAuthChallenge信息:沒有可用於BASIC 「AXIS'@example.com憑據:443

我通過在URL之前編碼的用戶名和密碼。我沒有得到任何線索如何解決這個問題。請求幫助。

回答

0

使用Apache HttpClient的,所以你應該這樣做的更好:

CredentialsProvider provider = new BasicCredentialsProvider(); 
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("username", "userpass"); 
provider.setCredentials(AuthScope.ANY, credentials); 
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build(); 

HttpResponse response = client.execute(new HttpGet("http://domain.com")); 

檢查這個很好的例子:HttpClient Basic Authentication

+0

它可以在我的用例的幫助,但我一直在尋找特別的擊中像** http:// user:[email protected]** – shubham12511

+0

@ sbmc7在這種情況下使用HttpURLConnection – dit

相關問題