Dae galera, trabalho com ColdFusion e recentemente preciso fazer uma integração com uma API. Contudo, preciso que ela seja em Java, de acordo com as necessidades do nosso sistema.
Tenho a seguinte URI
curl -k --digest -u usuario:senha https://api.uni5.net/cliente
Vi alguns tópicos muito bons mas mesmo assim não consegui chegar ao resultado final porque um exemplo usa Post, e outro que usa GET parece não encontrar a URL passando a porta no final da URL
(POST) http://stackoverflow.com/questions/19164494/rest-call-using-apachehttpclient-with-data-and-headers
/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.http.examples.client;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.DigestScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
/**
* An example of HttpClient can be customized to authenticate preemptively using
* DIGEST scheme.
* <p/>
* Generally, preemptive authentication can be considered less secure than a
* response to an authentication challenge and therefore discouraged.
*/
public class ClientPreemptiveDigestAuthentication {
public static void main(String[] args) throws Exception {
HttpHost target = new HttpHost("api.uni5.net/cliente", 443 , "https");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(target.getHostName(), target.getPort()),
new UsernamePasswordCredentials("user", "pass")
);
CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
try {
AuthCache authCache = new BasicAuthCache();
DigestScheme digestAuth = new DigestScheme();
// digestAuth.overrideParamter("realm", "Area restrita.");
// digestAuth.overrideParamter("nonce", "532312abd5d17");
authCache.put(target, digestAuth);
// Add AuthCache to the execution context
HttpClientContext localContext = HttpClientContext.create();
localContext.setAuthCache(authCache);
HttpGet httpget = new HttpGet("/");
System.out.println("Executing request " + httpget.getRequestLine() + " to target " + target);
for (int i = 0; i < 3; i++) {
CloseableHttpResponse response = httpclient.execute(target, httpget, localContext);
try {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
EntityUtils.consume(response.getEntity());
} finally {
response.close();
}
}
} finally {
httpclient.close();
}
}
}
Alguém sabe uma maneira simples de fazer, sem utilizar muita dependência.
Estou usando hoje somente httpclient e dependências.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.1</version>
</dependency>
Obrigado!