使用 ——HttpClientUtil.getInstance().getResultAsString(url)
public class CitiFixLoaderManager {
private final Logger log = LoggerFactory.getLogger(this.getClass());
private static PropertiesLoader props = new PropertiesLoader("classpath:/application.properties");
public Map getFixData() throws Exception {
Map fixDataMap = new HashMap();
String result = null;
JsonObject rs = new JsonObject();
try {
String url = props.getProperty(Constants.CITIFIX_URL);
if (StringUtils.isEmpty(url)) {
throw new Exception("CitiFix URL is empty");
} else {
log.info("citifix url: {} ", url);
}
result = HttpClientUtil.getInstance().getResultAsString(url);
rs = JsonHelper.convertFromStringToJson(result);
if (rs != null && rs.getAsJsonArray("fields") != null) {
JsonArray jsonArray = rs.getAsJsonArray("fields");
for (JsonElement element : jsonArray) {
JsonObject jsonObject = element.getAsJsonObject();
String tag = jsonObject.get("tag").getAsString().trim();
String decription = jsonObject.get("description").getAsString().trim();
if (StringUtils.isNotEmpty(tag) & StringUtils.isNotEmpty(decription)) {
if (tag.length() > 4000) {
tag = tag.substring(0, 4000);
}
if (decription.length() > 500) {
decription = decription.substring(0, 500);
}
fixDataMap.put(tag, decription);
}
}
}
} catch (Exception e) {
log.error("Request issue :{} ", e);
throw new Exception(e);
}
return fixDataMap;
}
}
HttpClientUtil
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.client.urlconnection.HTTPSProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.*;
import javax.ws.rs.core.MediaType;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class HttpClientUtil {
private final Logger log = LoggerFactory.getLogger(this.getClass());
private Client client;
private HttpClientUtil() {
try {
final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(final X509Certificate[] chain, final String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(final X509Certificate[] chain, final String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}};
ClientConfig config = new DefaultClientConfig();
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(
new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
// whatever your matching policy states
return true;
}
}, sslContext
));
client = Client.create(config);
client.setConnectTimeout(60 * 2 * 1000);
client.setReadTimeout(60 * 2 * 1000);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static HttpClientUtil getInstance() {
return ClientUtilHolder.instance;
}
public static class ClientUtilHolder {
private static HttpClientUtil instance = new HttpClientUtil();
}
public ClientResponse getResult(String url) throws Exception {
WebResource wb = client.resource(url);
ClientResponse rs = wb.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
if (rs.getStatus() != 200) {
log.error("Http error code: {}", rs.getStatus());
log.error("issue: {}", rs.getEntity(String.class));
throw new Exception(String.format("Cannot get response from URL: %s", url));
}
return rs;
}
public String getResultAsString(String url) throws Exception {
ClientResponse rs = this.getResult(url);
String result = rs.getEntity(String.class);
return result;
}
}