在Apache Http客户端Java中传递用户名/密码,类似于CURL
我有一个特定的CURL请求url,如下所示 curl-XGET-ukey:秒 我带着钥匙和密码。请帮助我使用ApacheHTTP客户端版本4.3在java中将相同的CURL调用转换为HTTP请求。当我尝试编写一段示例代码时,出现了以下异常在Apache Http客户端Java中传递用户名/密码,类似于CURL,curl,apache-httpclient-4.x,Curl,Apache Httpclient 4.x,我有一个特定的CURL请求url,如下所示 curl-XGET-ukey:秒 我带着钥匙和密码。请帮助我使用ApacheHTTP客户端版本4.3在java中将相同的CURL调用转换为HTTP请求。当我尝试编写一段示例代码时,出现了以下异常 Exception in thread "main" org.apache.http.conn.HttpHostConnectException: Connect to api.calltrackingmetrics.com:443 [api.calltrac
Exception in thread "main" org.apache.http.conn.HttpHostConnectException: Connect to api.calltrackingmetrics.com:443 [api.calltrackingmetrics.com/166.78.112.169, api.calltrackingmetrics.com/198.61.173.12] failed: Connection refused: connect
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:138)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at com.test.callmetrics.mains.CallMetricsTester.main(CallMetricsTester.java:35)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:239)
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:118)
... 10 more
这是我的java代码
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
CloseableHttpClient httpclient = HttpClients.createDefault();
try{
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
AuthScope authscp = new AuthScope("api.calltrackingmetrics.com", 443);
credentialsProvider.setCredentials(authscp, new UsernamePasswordCredentials("mykey","mysecret"));
HttpClientContext localContext = HttpClientContext.create();
localContext.setCredentialsProvider(credentialsProvider);
HttpGet httpGet = new HttpGet("https://api.calltrackingmetrics.com/api/v1/accounts/myaccout/calls.json");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
// The underlying HTTP connection is still held by the response object
// to allow the response content to be streamed directly from the network socket.
// In order to ensure correct deallocation of system resources
// the user MUST either fully consume the response content or abort request
// execution by calling CloseableHttpResponse#close().
try {
System.out.println(response1.getStatusLine());
HttpEntity entity1 = response1.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity1);
} finally {
response1.close();
}
}
finally {
httpclient.close();
}
}
}
请帮我解决这个问题您不需要创建上下文-您只需在创建时将凭据提供程序传递给客户端即可:
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("mykey","mysecret");
AuthScope authscp = new AuthScope("api.calltrackingmetrics.com", 443);
provider.setCredentials(authscp, credentials);
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpResponse response = client.execute(new HttpGet("https://api.calltrackingmetrics.com/api/v1/accounts/myaccout/calls.json"));
int statusCode = response.getStatusLine().getStatusCode();
assertThat(statusCode, equalTo(HttpStatus.SC_OK));
这应该可以解决问题。
希望能有帮助 您不需要创建上下文-您只需在创建时将凭据提供程序传递给客户端即可:
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("mykey","mysecret");
AuthScope authscp = new AuthScope("api.calltrackingmetrics.com", 443);
provider.setCredentials(authscp, credentials);
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpResponse response = client.execute(new HttpGet("https://api.calltrackingmetrics.com/api/v1/accounts/myaccout/calls.json"));
int statusCode = response.getStatusLine().getStatusCode();
assertThat(statusCode, equalTo(HttpStatus.SC_OK));
这应该可以解决问题。
希望能有帮助 您不需要创建上下文-您只需在创建时将凭据提供程序传递给客户端即可:
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("mykey","mysecret");
AuthScope authscp = new AuthScope("api.calltrackingmetrics.com", 443);
provider.setCredentials(authscp, credentials);
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpResponse response = client.execute(new HttpGet("https://api.calltrackingmetrics.com/api/v1/accounts/myaccout/calls.json"));
int statusCode = response.getStatusLine().getStatusCode();
assertThat(statusCode, equalTo(HttpStatus.SC_OK));
这应该可以解决问题。
希望能有帮助 您不需要创建上下文-您只需在创建时将凭据提供程序传递给客户端即可:
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("mykey","mysecret");
AuthScope authscp = new AuthScope("api.calltrackingmetrics.com", 443);
provider.setCredentials(authscp, credentials);
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpResponse response = client.execute(new HttpGet("https://api.calltrackingmetrics.com/api/v1/accounts/myaccout/calls.json"));
int statusCode = response.getStatusLine().getStatusCode();
assertThat(statusCode, equalTo(HttpStatus.SC_OK));
这应该可以解决问题。
希望能有帮助