Hi,
We are working on migrating the httpclient verstion to 4.x and we have added dependency with the version 4.5. Here the httpclient get and post call codes throwing an
java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials exception on deploying the bundle though Credentials class is not referenced anywhere in the code. Version of AEM used is 6.2, Please find the code below for get call
public <T> T handleGet(ProxySettings proxySettings, String uri, ResponseMapper<T> responeMapper) {
//CloseableHttpClient client = HttpClients.createDefault();
HttpGet method = new HttpGet(uri);
CloseableHttpClient client = null;
if (AuthType.AUTH_NTLM.equals(proxySettings.getAuthType())) {
// add basic details
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope(proxySettings.getProxyHost(), proxySettings.getProxyPort(), AuthScope.ANY_REALM), new UsernamePasswordCredentials( proxySettings.getUserName(), proxySettings.getPassword()));
client = HttpClientBuilder.create()
.setDefaultCredentialsProvider(credentialsProvider)
.build();
// add proxy details
HttpHost proxy = new HttpHost(proxySettings.getProxyHost(), proxySettings.getProxyPort());
RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
method.setConfig(config);
}
try {
HttpResponse httpResponse = client.execute(method);
int status = httpResponse.getStatusLine().getStatusCode();
if (status == HttpStatus.SC_OK) {
return responeMapper.mapResponseToEntity(httpResponse.getEntity().getContent());
}
else {
return null;
}
}
catch (Exception e) {
DataException d = new DataException();
d.setCode(ErrorCodes.DATA_ACCESS_EXCEPTION);
d.setMessage(e.getMessage());
throw d;
}
}
Any input on this would be helpful.
Thanks,
Suresh
Solved! Go to Solution.
Views
Replies
Total Likes
You can also wrap this JAVA lib into an OSGi bundle and deploy to AEM, Looks like your code is not using the correct version.
You can wrap this Java JAR file using Eclipse plug-in project:
Maven Repository: org.apache.httpcomponents » httpclient » 4.5.2
See how we wrapped the Simple JSON JAR here - Scott's Digital Community: Submitting Adobe Experience Manager form data to custom Sling Servlets
Views
Replies
Total Likes
Hi Suresh,
Did your dependency (httpclient v4.5) resolved in AEM 6.2
Views
Replies
Total Likes
For some reason, this jar in not included in your bundle. Use <Import-Package> to import this jar in your core pom.xml.
You can also wrap this JAVA lib into an OSGi bundle and deploy to AEM, Looks like your code is not using the correct version.
You can wrap this Java JAR file using Eclipse plug-in project:
Maven Repository: org.apache.httpcomponents » httpclient » 4.5.2
See how we wrapped the Simple JSON JAR here - Scott's Digital Community: Submitting Adobe Experience Manager form data to custom Sling Servlets
Views
Replies
Total Likes
Resolved the issue by giving dependency versions of httpclient and httpcore related packages in the <Import-Package> in the Pom.xml
Thanks
Suresh
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies