HttpClient v4.3 例子: Https, Basic Auth, Get/Post

Https 例子:

HttpHost host = new HttpHost(ip, 443, "https");

public CloseableHttpClient createHttpsClient() {
    X509TrustManager x509mgr = new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] xcs, String string) {
        }
        @Override
        public void checkServerTrusted(X509Certificate[] xcs, String string) {
        }
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    };

    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, new TrustManager[] { x509mgr }, null);
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    return HttpClients.custom().setSSLSocketFactory(sslsf).build();
}
Basic Auth:
HttpHost host = new HttpHost(ip, 443, "https");

private HttpClientContext createBasicAuthContext(String username, String password) {
    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    Credentials defaultCreds = new UsernamePasswordCredentials(username, password);
    credsProvider.setCredentials(new AuthScope(host.getHostName(), host.getPort()), defaultCreds);

    AuthCache authCache = new BasicAuthCache();
    BasicScheme basicAuth = new BasicScheme();
    authCache.put(host, basicAuth);

    HttpClientContext context = HttpClientContext.create();
    context.setCredentialsProvider(credsProvider);
    context.setAuthCache(authCache);
    return context;
}
doGet:
private CloseableHttpResponse doGet(String url, Map<String, String> headers) throws IOException {
    HttpGet get = new HttpGet(url);
    for (Map.Entry<String, String> header : headers.entrySet()) {
        get.setHeader(header.getKey(), header.getValue());
    }
    HttpContext context = createBasicAuthContext("admin", "password");
    CloseableHttpResponse response = client.execute(host, get, context);
    try {
        // status = response.getStatusLine().getStatusCode();
        // headers = response.getAllHeaders();

        // HttpEntity entity = response.getEntity();
        // text = IOUtils.toString(entity.getContent(), "ISO-8859-1");

        return response;
    } finally {
        response.close();
    }
}
doPost:
private void doPost(String url, Map<String, String> headers, String body) throws IOException {
    HttpPost post = new HttpPost(url);
    for (Map.Entry<String, String> header : headers.entrySet()) {
        post.setHeader(header.getKey(), header.getValue());
    }
    post.setEntity(new StringEntity(body));
    HttpContext context = createBasicAuthContext("admin", "password");
    CloseableHttpResponse response = client.execute(host, post, context);
    try {
        // status = response.getStatusLine().getStatusCode();
        // headers = response.getAllHeaders();

        // HttpEntity entity = response.getEntity();
        // text = IOUtils.toString(entity.getContent(), "ISO-8859-1");
    } finally {
        response.close();
    }
}

转载于:https://my.oschina.net/sub/blog/169795

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值