title: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.<init>(I)V
body: <p>I have to connect to a URL, and in that i have a link click here to download, when i click on it,it downloads a zip file which has multiple files in it. My requirement is to download that zip file using java application.I am trying to point to a URl and download the file.</p>
  
  <p>I have taken the code from <a href="https://stackoverflow.com/questions/31337011/how-to-remotely-login-to-a-jenkins-server-using-java">How to remotely login to a Jenkins server using Java?</a></p>
  
  <p>Below is the code:</p>
  
  <pre><code>import org.apache.http.HttpHost;
  import org.apache.http.HttpResponse;
  import org.apache.http.auth.AuthScope;
  import org.apache.http.auth.UsernamePasswordCredentials;
  import org.apache.http.client.AuthCache;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.CredentialsProvider;
  import org.apache.http.client.methods.HttpGet;
  import org.apache.http.client.protocol.HttpClientContext;
  import org.apache.http.impl.auth.BasicScheme;
  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;
  
  import java.io.IOException;
  import java.net.URI;
  
      public class JenkinsScraper {
  
          public String scrape(String urlString, String username, String password) throws ClientProtocolException, IOException {
              URI uri = URI.create(urlString);
              HttpHost host = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
              CredentialsProvider credsProvider = new BasicCredentialsProvider();
              credsProvider.setCredentials(new AuthScope(uri.getHost(), uri.getPort()), new UsernamePasswordCredentials(username, password));
              // Create AuthCache instance
              AuthCache authCache = new BasicAuthCache();
              // Generate BASIC scheme object and add it to the local auth cache
              BasicScheme basicAuth = new BasicScheme();
              authCache.put(host, basicAuth);
              CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
              HttpGet httpGet = new HttpGet(uri);
              // Add AuthCache to the execution context
              HttpClientContext localContext = HttpClientContext.create();
              localContext.setAuthCache(authCache);
  
              HttpResponse response = httpClient.execute(host, httpGet, localContext);
  
              return EntityUtils.toString(response.getEntity());
          }
  
          public static void main(String args[]) throws IOException {
              JenkinsScraper obj = new JenkinsScraper();
             String result =  obj.scrape("https://info-build.gm.com/view/tools/job/MISC.DefectSummaryReport/lastSuccessfulBuild/artifact/","JZYH8B","may@2017");
              System.out.print("result :: " + result);
          }
  
      }
  </code></pre>
  
  <p>I'm facing below exception:</p>
  
  <pre><code>Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.&lt;init&gt;(I)V
      at org.apache.http.impl.auth.BasicScheme.authenticate(BasicScheme.java:168)
  </code></pre>
  
  <p>Had someone worked on this type of requirement where we will have a link in the Jenkins URL, using java code we need to hit the URL and download the zip file.Do i need tp use any other API to achieve this functionality.Any suggestions would be helpful.</p>