Java 在url中传递用户和密码时无法使用基本身份验证

Java 在url中传递用户和密码时无法使用基本身份验证,java,http,authentication,url,Java,Http,Authentication,Url,我有一个soap端点、用户和密码。 user=“Org API/uAPI529457959-E784399” password=“t61/B=09{v” HttpClient导入 import org.apache.commons.codec.binary.Base64; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.MultiThreadedHttpConnection

我有一个soap端点、用户和密码。
user=“Org API/uAPI529457959-E784399”
password=“t61/B=09{v”

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中传递用户和密码时。

它给出了以下日志

2016年12月2日下午12:51:44 org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme信息:2002年12月选择的基本身份验证方案, 2016年12:51:44 PM org.apache.commons.httpclient.HttpMethodDirector processWWWAuthChallenge信息:没有可用于BASIC的凭据 “AXIS”@example.com:443


在传入url之前,我对用户和密码进行了编码。我不知道如何解决此问题。请寻求帮助。

您正在使用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"));

检查这个伟大的例子:

您正在使用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"));

检查这个很好的例子:

在我的用例中它可能会有帮助,但我特别希望像@sbmc7这样点击在这个用例中使用HttpURLConnection它在我的用例中可能会有帮助,但我特别希望像@sbmc7这样点击在这个用例中使用HttpURLConnection