Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Apache Http客户端Java中传递用户名/密码,类似于CURL_Curl_Apache Httpclient 4.x - Fatal编程技术网

在Apache Http客户端Java中传递用户名/密码,类似于CURL

在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

我有一个特定的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.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));
这应该可以解决问题。 希望能有帮助