Exception in HttpClientCode | Community
Skip to main content
sureshl93367205
New Participant
August 3, 2017
Solved

Exception in HttpClientCode

  • August 3, 2017
  • 4 replies
  • 3165 views

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

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by smacdonald2008

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

4 replies

sureshl93367205
New Participant
August 31, 2017

Resolved the issue by giving dependency versions of httpclient and httpcore related packages in the <Import-Package> in the Pom.xml

Thanks

Suresh

smacdonald2008
smacdonald2008Accepted solution
New Participant
August 3, 2017

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

Singaiah_Chintalapudi
New Participant
August 3, 2017

For some reason, this jar in not included in your bundle. Use <Import-Package> to import this jar in your core pom.xml.

New Participant
August 3, 2017

Hi Suresh,

Did your dependency (httpclient v4.5) resolved in AEM 6.2